China Mobile Suyan (Mobile Cloud) インタビュー (一部)

最初のラウンド

  • 自己紹介
  • スリープ方式とウェイト方式の違い
  • mysql フル テーブル スキャンが発生する状況の例を挙げてください
  • kong ゲートウェイのパフォーマンスはどうですか? APISIX と比較しましたか?
  • クラスをロードする JVM のプロセス
  • 開発とリリースのプロセス。参考回答:一次メーカー:需要提案から上市までの流れまとめ①
    ここに画像の説明を挿入
  • プラットフォームの内部呼び出しの暗号化と復号化を行いましたか? レビュー: jwt のはずです
  • リファクタリング
  • 長い通話のインターフェイスの最適化とパフォーマンスの最適化を行いましたか?
  • いくつかのタイプの mysql ログとその用途

二回戦

  • 従来の非コンテナ展開に対する k8s 展開の利点
  • どのような種類のサービスが使用されていますか? ClusterIP、NodePort、LoadBalancer など。
  • 会社で使用される k8s クラスターのサイズ (基礎となる IAAS レイヤーを参照)
  • PythonはAnswerableを使用したことがありますか?
  • ELK のログ コレクターは OOM を経験しましたか?
  • 監視システム?私は答えます:コレクタ CAAdvisor + 時系列データベース Prometheus + 可視化ツール Grafana です。実際、面接官は私に反対のことを言いました。反転がなかったことを鮮明に覚えており、後で資料を確認しましたが、反転したのは私ではありませんでした。
  • 接続プールへのアクセスが多すぎる、接続が接続できない、ライブラリの同期の問題など、mysql の使用中に問題が発生したことはありませんか?
  • ヒープ メモリが 32G 未満の場合、JVM はどうなりますか? オブジェクト ヘッダーはデフォルトで何を有効にしますか? 参考回答:ポインタ圧縮。

JAVAポインター圧縮の実装原理についてお話しましょう(イラストとテキスト、数秒で理解できます)この記事はその一部を理解していますが、いくつかの問題が十分に説明されていないことを常に感じています。たとえば、テキストのロジックによると、ポインターの圧縮では 8 バイト アラインメントが使用されるため、32 ビット システムは 32G メモリをアドレス指定できることがわかります。しかし、これは、64 ビット システムのヒープ メモリが 32G を超え、ポインター圧縮が失敗するという結論に至る方法です。64 ビット システムのアドレス空間は、32 ビット システムの 2 乗でなければなりません。

  • jmapによってエクスポートされたファイルのサフィックスは何ですか?
  • springboot 統一認証の方法。A: フィルター Q: いくつかのメソッドのみを認証したい場合は、AspectJ を使用しますが、その方法を知っていますか?
    いくつかの重要なポイントを要約します (次のコード参照1 2 )。

@Aspect アスペクトクラス,
@Pointcut ポイントカット: アスペクトクラスは @Pointcut で修飾されたメソッドを定義し、ポイントカット式関数を使用して、アドバイスを使用する Join ポイント (接続ポイント) を記述します。好き:

	@Pointcut("@annotation(com.xys.demo1.AuthChecker)")
    public void pointcut() {
    
    
    }

@Advice アドバイス、または拡張好き:

	@Around("pointcut()")
    public Object checkAuth(ProceedingJoinPoint joinPoint) throws Throwable {
    
    
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
                .getRequest();
 
        // 检查用户所传递的 token 是否合法
        String token = getUserToken(request);
        if (!token.equalsIgnoreCase("123456")) {
    
    
            return "错误, 权限不合法!";
        }
 
        return joinPoint.proceed();
    }

カスタム アノテーション AuthChecker.java を使用してカット ポイントを特定します。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AuthChecker {
    
    
}
  • 電流制限メカニズムを設計します。Hystrix のソース コードを見たことがありますか?
  • スプリング ブート スターターを作成したことがありますか?
  • 新世代の JVM を Eden 領域と Survivor 領域に分けて
    レビューする必要がある理由: この問題に関する情報を検索したところ、インターネット上にはほとんど同じドキュメントが多数あります:「Survivor がない場合、マイナー GC が毎回Eden エリアで実行された場合、生き残ったオブジェクトは To the old age に送信されます.Survivor の意味は、古い Age に送信されるオブジェクトの数を減らし、それによって Full GC の発生を減らすことです。"この段落を説明するのは理にかなっています。サバイバーがいない場合、Eden エリアでマイナー GC が実行されるたびに、生き残ったオブジェクトが古い世代に送信されるのはなぜですか? エデンエリアでリサイクルされており、古い世代に送られる前に年齢が閾値を超えていますね。
  • CICD の基本的なツールに精通していますか?
  • マイクロサービスを k8s にデプロイする方法。Consul、Pod アドレス、Service アドレス、または何に格納されているアドレスは何ですか? レビュー: Pod アドレス。参照できます: k8s 環境で grpc をデプロイするためのいくつかのスキーム
  • docker compose は役に立ちましたか? DockerFile の CMD と EntryPoint の違いは何ですか?

  1. https://blog.csdn.net/limengliang4007/article/details/78660834 ↩︎

  2. https://cloud.tencent.com/developer/article/1351205 ↩︎

おすすめ

転載: blog.csdn.net/qq_23204557/article/details/129133969