ただし、フロントエンドでアルゴリズムに触れる機会はほとんどありません。ほとんどがインタラクティブな操作ですが、大手企業のインタビューから判断すると、アルゴリズムは依然として評価の一側面となっています。実際、データ構造とアルゴリズムを学ぶことは、エンジニアが問題を理解し分析するのに役立ちます。将来、より複雑な問題に直面した場合、これらの基本的な知識を蓄積することで、解決策をより最適化できるようになります。フロントエンドの面接でよく聞かれる質問をいくつか紹介します。 Q1 単語が回文であるかどうかを判断するにはどうすればいいですか? 回文とは、同じ単語や文が次のテキストで入れ替わったり逆になったりして、ループ効果を生み出す文です。これを回文またはループと呼びます。たとえば、mamam redivider などです。 多くの人がこのような質問を受けたとき、 for を使用して文字列のアルファベット順を逆にしてから一致させることを簡単に思いつくでしょう。実は、検討すべき重要な点は、リバースの実装です。実際、既製の関数を使用して文字列を配列に変換できます。このアイデアは非常に重要です。文字列操作をより自由に実行できるようになります。
Q2 整数配列から重複した値を削除する たとえば、次のように入力します: [1,13,24,11,11,14,1,2] 出力: [1,13,24,11,14,2] 繰り返される要素 11 と 1 を削除する必要があります。 この質問は、フロントエンドの面接の多くの質問に出てきます。主に、オブジェクトの使用とスクリーニングのためのキーの使用を調べます。
Q3 文字列内の最も一般的な文字を数える 連続した英語の文字列が与えられたとき、最も多く出現する文字を見つけます。 入力: afjghdfraaaasdenas 出力: 繰り返し回数を数えるには、先ほど登場した繰り返し回数を計算するアルゴリズムが必要になります。
Q4 ソートアルゴリズム アルゴリズムに関する質問を受けた場合、そのほとんどは比較的オープンな質問であるはずです。アルゴリズムの実装を制限するものではありませんが、いくつかのアルゴリズムを習得する必要があります。したがって、比較的基本的で理解しやすく、記憶しやすいアルゴリズムであるバブルソートは、必ず記憶する必要があります。バブルソートアルゴリズムは、サイズを順番に比較し、小さい方と大きい方の位置を交換します。
バブルソート以外にも、挿入ソート、クイックソート、シェルソートなど、実は他にもたくさんのソートが存在します。各ソートアルゴリズムには独自の特性があります。すべてを習得する必要はありませんが、いくつかのアルゴリズムに精通している必要があります。 たとえば、クイックソートは非常に効率的で、その基本原理は図のとおりです (wiki より)。 このアルゴリズムは、特定の要素の値を参照し、それより小さい値を左の配列に、それより大きい要素を右の配列に格納し、左の配列と右の配列に対して最後の操作を再帰的に実行し、マージされた配列、つまりソートされた配列を返します。
皆さんに学習リンクを紹介し、アニメーションを通じてアルゴリズムの実装を実演したいと思います。 HTML5 Canvas デモ: ソートアルゴリズム (http://math.hws.edu/eck/jsdemo/sortlab.html) Q5 一時変数を使わずに2つの整数を交換する 入力 a = 2、b = 4 出力 a = 4、b = 2 このタイプの質問は非常に巧妙で、通常の方法から離れて考え、a と b を代入して使用する必要があります。 主に + – を使用して計算を実行します。たとえば、a = a + ( b – a) は実際には *** の a = b と同等です。
Q6 キャンバスを使用して有限フィボナッチ数列曲線を描くにはどうすればよいでしょうか? シーケンスの長さは 9 に制限されます。 フィボナッチ数列は黄金比数列とも呼ばれ、0、1、1、2、3、5、8、13、21、34、... のような数列を指します。数学では、フィボナッチ数列は主に再帰呼び出しを調べます。定義は一般的に知られている
フィボナッチ配列を生成する方法
残りの作業は、キャンバスアーク法を使用して曲線を描くことです。 デモ (http://codepen.io/Jack_Pu/pen/LRaxZB) Q7 たとえば、次の正の配列の *** 差を求めます。 入力[10,5,11,7,8,9] 出力6 これは、基本配列の最大値の検索をテストする質問です。明らかに、最大差は配列内の最大値と最小値の差でなければならないことはわかっています。
Q8 指定された長さの文字列をランダムに生成する 指定された長さの文字列をランダムに生成するアルゴリズムを実装します。 例えば、長さが8の場合、出力は4ldkfg9jとなる。
Q9 getElementsByClassNameに似た関数を実装する 特定のクラスを含む特定の DOM ノードの下にあるすべての DOM ノードを検索する関数を自分で実装しますか? ネイティブ システムによって提供される getElementsByClassName querySelectorAll などのネイティブ DOM 検索関数を使用することはできません。
Q10 JSを使用して二分探索木を実装する 一般的に言えば、タスク全体を完了する可能性は比較的低いですが、タスクの理解といくつかの基本機能の実装に重点が置かれます。 バイナリ検索ツリーは、バイナリ検索ツリーまたは順序付きバイナリツリーとも呼ばれ、次のプロパティを持つ空のツリーまたはバイナリツリーです。
記述する際には、二分探索木の特性を十分に理解し、各ノードのデータ構造を最初に設定する必要があります。
ツリーは、ルートノードから各子ノードへと段階的に拡張されるノードで構成されているため、ルートノードと、ノードの追加、検索、削除のメソッドを持つのが基本的な構造です。
完全なコード Github (https://github.com/JackPu/JavaScript-Algorithm-Learning) さらに読む https://www.interviewcake.com/question/javascript/rectangular-love http://stackoverflow.com/questions/21853967/get-elements-by-class-a-or-b-in-javascript http://codepen.io/Jack_Pu/pen/EgrXBp http://javascript-html5-tutorial.com/javascript でのアルゴリズムとデータ構造.html |
<<: ディープラーニングツール: TensorFlow と NLP モデル
>>: ディープラーニングとディープクローニング: チャットボットにとってより優れたソリューションはどちらでしょうか?
ICLR 2022の授賞式を利用して、MIT、コーネル、Google、Microsoftが新しいSO...
9月10日、ファーウェイHarmonyOSテクノロジーコミュニティの年間優秀共同構築パートナー選定結...
億万長者のイーロン・マスク氏は最近、一連のツイートで、ロボットが人間の仕事を奪うなら、政府による普遍...
よく考えてみると、この質問は少し皮肉に思えます。将来、新しいクリエイター (AI) がクリエイター ...
機械学習は現在隆盛を極めていますが、機械学習を学習・研究し、実稼働環境で活用したい場合には、プラット...
2016年以降、人工知能と医療の融合があらゆる面で火花を散らし始めています。医療AIは数年にわたる開...
著者 | 崔昊レビュー | Chonglouまとめこの記事では、マルチモーダル技術分野における Op...
[[320404]]デジタル化は金融サービスからヘルスケアまでほぼすべての業界に混乱をもたらしてお...
適切な技術人材の採用は、企業組織による人工知能 (AI) の導入に対する大きな障壁となっています。最...
海外メディアの報道によると、欧州委員会は最近、企業がEUの規則に違反し、禁止されている人工知能アプリ...
人工知能製品が私たちの生活の中でますます普及するにつれて、テクノロジーの発展は社会の関心の焦点となっ...
[[121946]]序文以前、このブログでクイックソートアルゴリズムに関する人気のチュートリアル記事...
製造業者は、AI を、適切に機能するために会社全体にわたるエンドツーエンドのシステムを必要とする、非...
[51CTO.com からのオリジナル記事] 「靴屋が 3 人いれば、諸葛亮 1 人より優れている」...