ただし、フロントエンドでアルゴリズムに触れる機会はほとんどありません。ほとんどがインタラクティブな操作ですが、大手企業のインタビューから判断すると、アルゴリズムは依然として評価の一側面となっています。実際、データ構造とアルゴリズムを学ぶことは、エンジニアが問題を理解し分析するのに役立ちます。将来、より複雑な問題に直面した場合、これらの基本的な知識を蓄積することで、解決策をより最適化できるようになります。フロントエンドの面接でよく聞かれる質問をいくつか紹介します。 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 モデル
>>: ディープラーニングとディープクローニング: チャットボットにとってより優れたソリューションはどちらでしょうか?
大企業と比較すると、中小企業は強力な技術的および財務的サポートが不足している可能性があり、技術者が不...
すでに非常に人気がある人工知能は、大学入試の願書が記入されるにつれて、間違いなく人気が続くでしょう。...
最近、2020年中国(青島)芸術博覧会の期間中、青島の「ダブル募集・ダブル紹介」特別イベントが開催さ...
インダストリー 4.0 はよく知られたアイデアですが、アグリカルチャー 4.0 はあまり知られていな...
[[417110]] IDCの世界人工知能市場に関する最新の半期追跡レポートによると、世界のAI市場...
この記事では、畳み込みニューラル ネットワーク (CNN) の基本原理を、関連する数学理論を省き、最...
8月28日、北京で開催されたAICC 2019人工知能コンピューティングカンファレンスで、Baidu...
「データ カタログ」という概念は、実は新しいものではありません。メインフレームの時代から、企業はデー...
自己教師あり学習入門[[251602]]確かに、ディープラーニングは、特に画像認識タスクにおいて、機...
[[415593]] 8月5日、外国メディアの報道によると、米軍は世界中のセンサーデータをタイムリ...
現在の AI テキスト検出器には、AI が生成したテキストと人間が作成したテキストを効果的に区別する...
新型コロナウイルスの世界的大流行が続く中、従業員にリモートワークを奨励する企業が増えています。従来の...