最新の9月のByte Beatsサーフェスアルゴリズムは非常に重要です。アルゴリズム+ Spring + Mysql +スレッドセーフティ+デザインパターン+ Redisなど。

この記事では、主に最新の9月のバイトビートを紹介します
。Spring + Mysql + Thread Safety + Reflection + Design Pattern + Redisなど。アルゴリズムは本当に重要です~~ 以下の QAQの
ここに画像の説明を挿入
質問は、私がまとめたよくある質問の一部です。さらに、20年以上の企業からのインタビューの知識ポイントと、無料で共有できるさまざまなJavaコア知識ポイントをまとめて収集しました。以下は、ほんの一部のスクリーンショットです。情報が必要な場合は、ここをクリックして入手してください!シークレットコードCSDN。ここに画像の説明を挿入

アルゴリズムの質問

アルゴリズムの質問を個別にリストします(回答を添付してください)
1.コードのコンパイルプロセス
•cppファイルのインクルードファイルを展開します。
•各cppファイルを対応するobjファイルにコンパイルします。
•objファイルをexeファイル(または他のライブラリファイル)にリンクする

2. 100W整数の中で最小のk数を見つける方法、利点、欠点は何ですか

クイックソート:パーティション化するときは、配列を数値Pに従って2つの部分に分割し、Pより大きい数値をaとして設定し、Pより小さい数値をbとして設定します。a> = kの場合、aの数からkの最大数を取得し、a <kの場合、bの数からka-1の最大数を取得します。

3. 2つの10Gファイルで同じ整数を見つける方法、利点、欠点は何ですか

(1)高速ソート+バイナリ検索(2)ビットマップ方式

ビットマップ法の適用

1.繰り返されない40億のunsigned int整数を指定してから、数値を指定します。この数値が40億の数値であるかどうかをすばやく判断する方法まず、40億の数値をビットマップに格納します次に、与えられた数について、それがビットマップにあるかどうかを判断します。

2.ビットマップメソッドを使用して、整数配列の繰り返し走査があるかどうかを判断し、ビットマップに1つずつ配置し、ビットマップに表示されているかどうかを確認します(表示されていない場合は挿入します)。それ以外の場合は繰り返し要素です。

3. 2億5000万の整数の中から繰り返しのない整数を見つけます。2億5000万の整数参照を保持するにはメモリが不足していることに注意してください:2ビットマップを使用(各番号には2ビットが割り当てられ、00は存在しない、01は存在しないことを意味します) 1回発生、10は複数回、11は無意味)。実際、ここでは2つの通常のビットマップを使用できます。つまり、最初のビットマップは整数が表示されるかどうかを格納し、再び表示される場合は、2番目のビットマップに設定するだけです。この場合、単純な1ビットマップを使用できます。

4.サイズが1Gのファイルがあり、その各行が1ワードで、ワードサイズが16バイトを超えず、メモリ制限が1Mである。最も頻度の高い100個の単語を返します。

スキーム1:シーケンシャルリーディングファイルで、各単語xについてそれを取得し、値に従って5000個の小さなファイル(と表記)に保存します。したがって、各ファイルは約200kです。一部のファイルのサイズが1Mを超えている場合は、同様の方法で分割を続行できます。分解によって取得された小さなファイルのサイズは1Mを超えないことがわかります。小さなファイルごとに、各ファイルに出現する単語と対応する頻度(トライツリー/ハッシュマップなどを使用できます)を数え、頻度が最大の100単語を取り出します(100個のノードを含む最小のヒープを使用できます)。 100ワードと対応する頻度をファイルに保存すると、さらに5000ファイルが取得されます。次のステップは、5000ファイルをマージすることです(マージソートと同様)。
5.大量のログデータ。Baiduを特定の日に最も訪問するIPを抽出します。

解決策1:まず、この日、BaiduへのアクセスのログにあるIPが取り出され、大きなファイルに1つずつ書き込まれます。IPは32ビットであり、最大で1つのIPがあることに注意してください。1000を法とする同じマッピング方法を使用して、大きいファイル全体を1000の小さいファイルにマップし、各小さい記事で最大の頻度を持つIPを見つけることができます(頻度統計にhash_mapを使用して、最も頻繁に見つけることができますA)および対応する頻度。次に、1000の最大IPの中から、頻度が最大のIPを見つけます。

6.ゾンビプロセスの原因と解決策:

子プロセスが親プロセスの前に終了し、親プロセスがwait / waitpidを呼び出さない場合、子プロセスはゾンビプロセスになります。psコマンドを使用すると、プロセスのステータスがZ(ゾンビを意味する)であることがわかります。

一般に、ゾンビプロセスが生成されないようにするには、子プロセスをフォークした後、ゾンビプロセスを待つ必要があります。同時に、子プロセスが終了すると、カーネルは親プロセスにSIGCHLDシグナルを与えるため、SIGCHLDシグナルをキャプチャするシグナル処理関数を作成できます。関数本体でwait(またはwaitpid)を呼び出して、終了した子プロセスをクリーンアップして、ゾンビプロセスを防止します。

7.長さNのリンクリストを提供します。Nは大きいですが、Nの大きさがわかりません。あなたの仕事は、これらのN個の要素からk個の要素をランダムに抽出することです。このリンクされたリストをトラバースできるのは1回だけです。アルゴリズムは、正確にk個の要素が取り出され、完全にランダムであること(発生確率が等しい)を保証する必要があります。

解決策:最初に、k + 1要素から最後の要素までの最初のkを選択し、k / iの確率でi番目の要素を選択します(i = k + 1、k + 2、...、N)。最初に選択した要素を置き換えると、1回のトラバースでk個の要素が取得され、完全にランダムな選択が保証されます。このアルゴリズムは、貯水池サンプリングと呼ばれます

8. 20個の配列があり、それぞれに降順で500個の配列があります。各数値は32ビット単位です。これらの10,000個の数値のうち最大の500個を見つけます。

20のアレイを1つに結合し、順序を保証せずに互いに隣接して接続します。マージされた配列の要素をランダムに選択し、この要素よりも小さいすべての要素を左側に配置し、右側に配置します。操作が完了した後、最初に選択した要素が右から500番目の位置にある場合、その要素から右に開始する要素が目的の要素です。それ以外の場合、右端の要素数が500を超える場合は、このメソッドを右端のシーケンスに再帰的に使用します。それ以外の場合は、左端シーケンスの数が10000〜500を超える場合は、このメソッドを左端のシーケンスに再帰的に使用します。予想される複雑さO(n)

9.スタックの問題:

配列を使用して2つのスタックを実装する方法:配列の両端を2つのスタックの開始点として使用し、中央まで拡張します。2つのスタックの要素の合計がnを超えない場合、2つのスタックは一致しません。
10.二分木:

二分木上の任意の2つのノードの最も近い共通の親ノードを見つけます。最初に2つのノードの深さを数え、次に深い(浅い)ステップに進み、最後に同時に上がります。最も近い共通の親ノードにヒットします。バイナリツリーのすべてのノードをNと見なす場合、私のアルゴリズムはlg(N)のみを必要とします。

11.バイナリツリーで合計が特定の値であるすべてのパスを検索します。

ノードに到達したら、現在のノードと合計の合計を計算します。それがターゲットの場合、出力パスが返されます。ターゲットよりも大きい場合は、直接返されます。それよりも小さい場合、現在のノードの値がスタックにプッシュされ、合計の値が更新され、トラバーサルが続行されます。その後、現在のノードから戻るときに、スタックからポップして合計を更新します

片側

•自己紹介
•プロジェクトに質問する
プロジェクトの売られすぎの問題をどのように解決しましたか?
•Javaポリモーフィズム?
•Javaランタイムデータ領域?効果?
•リフレクションとは何ですか?
•リフレクションを使用してオブジェクトを作成するには?利益?
•httpプロトコルのコンポーネントは何か、それをどのように要求するか?
•httpとhttps
違い•getとpostの違い
•データベースインデックス
•インデックスを作成するSQLステートメント

3つのプログラミング:
•最初のコインの問題、忘れられた特定の記述方法
•2番目:リンクされたリスト、2つのリンクされたリストの共通点
•3番目の配列:忘れられた特定の記述方法

砂時計の問題

両面

•自己紹介
•プロジェクトの紹介プロジェクトを立ち上げ
ましたか?プロジェクトの困難を解決するには?
• 春?
•MVCパターンとは何ですか?
•SpringMVCプロセスについて教えてください。
•mysqlについて教えてください?
•練習した
ことがありますか?プライベートIPとは何ですか?
•3つのハンドシェイク、4つの波?

プログラミングの問題:1億行のiPアドレス、最後から2番目の列ですべてのIPを検索

他にも基本的な質問がありますが、考えられません

三方

•自己紹介
•このプロジェクトに
はいくつのテーブルがあり
ますか• このデータテーブルのこのフィールドにはいくつの状態がありますか?•プロセスとスレッド?
•スレッドセーフ?
•プログラミングの質問は、連続するサブアレイの最大合計です
。•シングルトンモードを書き込みますか?
•シングルトンパターンはいつ利用できますか?プロジェクトの例について話している
•ファクトリパターンとは何ですか?それはあなたのプロジェクトで役に立ちますか?
•redisでよく使用されるコマンドはいくつありますか?
•一般的なLinuxコマンド?

hr麺

•彼女は最初に自分の会社の利点を紹介しました
•それではなぜ上海を選んだのですか?
•自宅はどこですか?
•両親はあなたが不在であることに同意しますか?

インタビューの要約

ByteDanceのインタビュアーは非常に優れています。インタビューの内容は、私が非常に多くの面接を行ったので最も包括的です。質問は特に難しいものではなく、すべてが作業現場に適しています。

プロジェクトは非常に重要です。プロジェクトは足がかりであり、インタビューの主要な部分です。履歴書に2つの項目がない場合、履歴書は入手が難しく、3つの側面に入ると推定されます。プロジェクトの観点から多くのインタビューの質問が行われ、回答はプロジェクトの回答と組み合わせることができます。これはボーナスです。

プロジェクトで使用されるテクノロジーに加えて、プロジェクトのビジネスとアーキテクチャにも注意を払う必要があります。それらを統合して明確に説明するのが最善です。

インタビューを増やすことによってのみ、元の「私は考えた」思考を「それがこのようになる」と変えることができます。

おすすめ

転載: blog.csdn.net/a646705816/article/details/108652934