2018 ~ 2022 年のフロントエンド JavaScript 面接の質問 (コレクション)
この記事は、2018 年から 2022 年までのフロントエンド JavaScript の面接の質問をまとめたものであり、一定の参考価値がありますので、皆さんのお役に立てればと思い、共有します。
[関連する推奨事項: フロントエンドのインタビューの質問(2022)、js のインタビューの質問(2022)]
私たちは本当にコードを書いているのでしょうか、それとも単にレゴブロックのようにコードを組み立てているだけなのでしょうか?
2020 年末現在、ほとんどの面接対象者が AJAX について質問されると、面接官は依然として jQuery のコンテキストで質問に答えています。このギャップの典型的な例は数多くあります。
CSS グリッドとフレックスボックス レイアウトは広くサポートされています。ただし、CSS のインタビューでは、依然として複数列のフロート レイアウトとブロック レベル要素のインライン センタリングに重点が置かれています。彼らは今でも Bootstrap や Foundation グリッド システムに対して尽きることのない情熱を持っています。
モジュール バンドラーは現在、大規模アプリケーションではほぼ標準となっています。ただし、アーキテクチャに関して言えば、縮小と連結について話します。面接中に Webpack について実際に何回話し合ったでしょうか?
コードの 97% が NPM から来ているが、インタビューの焦点は配列の並べ替えやオブジェクトの反復ではない場合。さらに悪いことに、私たちは依然として
typeof null
に興味を持っています。適切なライブラリ、フレームワーク、またはツールを選択するための合理的なアプローチについて話してみませんか?私たちは依然としてインタビュー対象者に、プロトタイプの上に古典的な継承を行うよう求めていますが、これらの誤解の必要性を検証するためではありません。より多くの機能モードがあります。もちろん、JavaScript クラスを使用して、新しく導入されたプライベート プロパティと静的プロパティについて議論することができます。これにより、面接官の考え方や重要な決定などをより深く理解できるようになります。
キャッシュに関する議論は、依然としてキャッシュ コントロール ヘッダー (コントロール ヘッダー) と CDN に限定されています。 IndexDB、HTTP/2、Service Worker などは通り過ぎていきます。
このような例は数え切れないほどあり、面接評価と実際の職務要件とのギャップは明らかです。一方で、私たちのフロントエンド技術の実装は飛躍的な進歩を遂げていますが、その一方で、新しい開発手法はまだ大きなコミュニティを形成していません。分断されたコミュニティは決して良い兆候ではありません。これは災難への道です。ギャップは常に新しいものを生み出し、それは私たちがこれまで築いてきたものをすべて破壊する力を持っています。 Java 開発者が GWT を使用して別の Facebook を作成するなんて想像できません。
面接は、変化を促し、才能ある人材を集めるための優れた方法です。面接官としては、面接をただの面接として捉えていては、自分が肥大化するだけです。
面接を成功させるには、ディスカッションを行う必要があります。きっと意見交換の場になるはずです。それは人々に与えられた問題を客観的に考え、分析するよう促すはずです。それは人々が下す意思決定プロセスを理解すること、テクノロジーと問題解決に対するその人の情熱を理解すること、そして将来同僚になる可能性のある人々を理解することです。これらすべてのパズル、トリック、またはtypeof null
は、実際の面接としては適格ではありません。
これは、面接でのディスカッション中に尋ねられる質問の一部のリストです。このチェックリストが、面接官と面接を受ける人が適切な状況で期待、ニーズ、現実を設定するのに役立つことを願っています。
TLDR; 私たちはまず自分自身を面接官として考える必要があります。
#JavaScript の基本的な質問
1. 次のコードを正常に実行します。
JavaScript コード:const a = [1, 2, 3, 4, 5]; // Implement this a.multiply(); console.log(a); // [1, 2, 3, 4, 5, 1, 4, 9, 16, 25]
2。次のコードは JavaScript で false を返します。この理由を説明してください:
// false 0.2 + 0.1 === 0.3
4. 次の非同期コードの問題を解決します。
同じ教室に所属する各生徒 (ID 75 を持つ生徒もいます) の平均スコアを取得して計算します。各学生は年間に 1 つ以上のコースを受講できます。次の API を使用して、必要なデータを取得できます。 JavaScript コード:// GET LIST OF ALL THE STUDENTS GET /api/students Response: [{ "id": 1, "name": "John", "classroomId": 75 }] // GET COURSES FOR GIVEN A STUDENT GET /api/courses?filter=studentId eq 1 Response: [{ "id": "history", "studentId": 1 }, { "id": "algebra", "studentId": 1 },] // GET EVALUATION FOR EACH COURSE GET /api/evaluation/history?filter=studentId eq 1 Response: { "id": 200, "score": 50, "totalScore": 100 }
[ { "id": 1, "name": "John", "average": 70.5 }, { "id": 3, "name": "Lois", "average": 67 }, ]
callbacks、promises、 observables、generator、または async-wait を使用して、必要な関数を作成します。少なくとも 3 つの異なる手法を使用して、この問題を解決してみてください。
5. JavaScript プロキシを使用して単純なデータ バインディングを実装する
ヒント: ES プロキシを使用すると、任意のオブジェクト プロパティまたはメソッドへの呼び出しをインターセプトできます。まず、基礎となるバインディング オブジェクトが変更されるたびに DOM を更新する必要があります。6.解释 JavaScript 并发模型
您是否熟悉 Elixir,Clojure,Java 等其他编程语言中使用的任何其他并发模型?
提示:查找事件循环,任务队列,调用栈,堆等。
7.new
关键字在 JavaScript 中有什么作用?
提示:在 JavaScript 中,new
是用于实例化对象的运算符。 这里的目的是了解知识广度和记忆情况。
另外,请注意 [[Construct]]
和 [[Call]]
。
8.JavaScript 中有哪些不同的函数调用模式? 详细解释。
提示:有四种模式,函数调用,方法调用,.call()
和 .apply()
。
9.解释任一即将发布新的 ECMAScript 提案。
提示:比如 2018 的 BigInt,partial 函数,pipeline 操作符 等。
10.JavaScript 中的迭代器(iterators)和迭代(iterables)是什么? 你知道什么是内置迭代器吗?
11.为什么 JavaScript classes(类)被认为是坏的或反模式?
这是一个神话吗?它是否遭受了误传?是否有一些有用的用例?
12.如何在 JSON 中序列化以下对象?
如果我们将以下对象转换为 JSON 字符串,会发生什么?
JavaScript 代码:
const a = { key1: Symbol(), key2: 10 } // What will happen? console.log(JSON.stringify(a));
13.你熟悉 Typed Arrays 吗? 如果熟悉,请解释他们与 JavaScript 中的传统数组相比的异同?
14. 默认参数是如何工作?
如果我们在调用 makeAPIRequest
函数时必须使用 timeout
的默认值,那么正确的语法是什么?
JavaScript 代码:
function makeAPIRequest(url, timeout = 2000, headers) { // Some code to fetch data }
15.解释 TCO – 尾调用优化(Tail Call Optimization)。 有没有支持尾调用优化的 JavaScript 引擎?
提示:截至 2018 年,没有。
JavaScript 前端应用设计问题
1.解释单向数据流和双向数据绑定。
Angular 1.x 基于双向数据绑定,而 React,Vue,Elm 等基于单向数据流架构。
2.单向数据流架构在哪些方面适合 MVC?
MVC 拥有大约 50 年的悠久历史,并已演变为 MVP,MVVM 和 MV *。两者之间的相互关系是什么?如果 MVC 是架构模式,那么单向数据流是什么?这些竞争模式是否能解决同样的问题?
3.客户端 MVC 与服务器端或经典 MVC 有何不同?
提示:经典 MVC 是适用于桌面应用程序的 Smalltalk MVC。在 Web 应用中,至少有两个不同的数据 MVC 周期。
4.使函数式编程与面向对象或命令式编程不同的关键因素是什么?
提示:Currying(柯里化),point-free 函数,partial 函数应用,高阶函数,纯函数,独立副作用,record 类型(联合,代数数据类型)等。
5.在 JavaScript 和前端的上下文中,函数式编程与响应式编程有什么关系?
提示:没有正确答案。但粗略地说,函数式编程是关于小型编码,编写纯函数和响应式编程是大型编码,即模块之间的数据流,连接以 FP 风格编写的组件。 FRP – 功能响应式编程( Functional Reactive Programming)是另一个不同但相关的概念。
6.不可变数据结构(immutable data structures)解决了哪些问题?
不可变结构是否有任何性能影响? JS 生态系统中哪些库提供了不可变的数据结构?这些库的优点和缺点是什么?
提示:线程安全(我们真的需要在浏览器 JavaScript 中担心吗?),无副作用的函数,更好的状态管理等。
7.大型应用程序是否应使用静态类型?
如何比较 TypeScript/Flow 与 Elm/ReasonML/PureScript 等 JS 转换语言?这些方法的优缺点是什么?
选择特定类型系统的主要标准应该是什么?
什么是类型推断(type inference)?
静态类型语言和强类型语言有什么区别?在这方面 JavaScript 的本质是什么?
有你知道的弱类型但静态类型的语言吗?有你知道的动态类型但强类型的语言吗?举例一二。
提示:Structural 与 Nominal 类型系统,类型稳健性,工具/生态系统支持,正确性超过方便。
8.JavaScript 中有哪些杰出的模块系统(module systems )?如何评价 ES 模块系统。
列出在实现不同模块系统之间互操作所涉及的一些复杂性问题(主要对 ES 模块和 CommonJS 互操作感兴趣)
9.HTTP/2 は JavaScript アプリケーションのパッケージ化にどのような影響を与えますか?
HTTP/2 とその以前のバージョンの基本的な違いをリストします。
10.Fetch API は従来の Ajax と比べてどのような点が改善されていますか?
Fetch API を使用することの欠点や難しさは何ですか?
Ajax ではフェッチできなくて何ができるのでしょうか?
#11. プルベースとプッシュベースのリアクティブ システムについてコメントする方法。
概念、意味、用途などについて話し合います。
この議論に、怠惰と早期評価を追加します。
次に、単数と複数の値のディメンションをディスカッションに追加します。
最後に、値解析の同期および非同期の性質について説明します。
JavaScript で使用できるすべての組み合わせの例を示します。
ヒント: Observable は遅延型で、プッシュされた複素数値に基づいて構築され、非同期/同期スケジューラを備えています。
12. Promise に関する問題について話し合います。
ヒント: 積極的な評価、厄介なキャンセルメカニズム、map()
と flatMap ()
を偽装するために then()
メソッドを使用する待って。
フロントエンドの基本と理論的問題
1.目的は何ですか? HTMLでDoctype?
次のそれぞれの状況で何が起こるか具体的に説明しましょう:- Doctype が存在しません。
-
などの HTML5 タグを使用します。エラーが発生することはありますか?は HTML4 Doctype を使用しますが、HTML ページでは
- 無効な Doctype が使用されました。
2. DOM と BOM の違いは何ですか?
ヒント: BOM、DOM、ECMAScript、JavaScript はすべて別のものです。3. JavaScript でのイベント処理はどのように機能しますか?
下の図に示すように、3 つの div 要素があります。各 div には、関連付けられたクリック ハンドラーがあります。ハンドラーは次のタスクを実行します。-
を出力します。Outer div クリック ハンドラーは、コンソールに
hello external -
をコンソールに出力します。Inner div クリック ハンドラーは、
hello inner - Innermost div クリック ハンドラーは、コンソールに hello innermost を出力します。
こんにちは内部
→
こんにちは内部最も →
こんにちは外部
4. シングル ページ アプリケーションを使用してファイルをサーバーにアップロードする方法は何ですか?
ヒント: XMLHttpRequest2 (ストリーミング)、フェッチ (非ストリーミング)、ファイル API5。CSS リフローと再描画の違いは何ですか?
リフローと再描画を引き起こす CSS プロパティはどれですか?6. CSS セレクターの重みとは何ですか?またその仕組みは何ですか?
CSS セレクターの重みを計算するアルゴリズムについて話しましょう。7. CSS のピクセルはハードウェア/物理のピクセルとどう違うのですか?
ヒント: ピクセルはピクセルではありません、ピクセルではありません – ppk。8. セクショニングアルゴリズムとは何ですか?
ヒント: HTML5 アウトライン アルゴリズムとも呼ばれます。セマンティック構造を備えた Web サイトを構築する場合は特に重要です。9. CSS Flex / CSS Grid (グリッド) レイアウトを使用したことがある場合、それを使用する理由を説明してください。それはあなたにとってどんな問題を解決しましたか?
- CSS グリッドを使用したパーセント % 単位と fr 単位の違いは何ですか?
- CSS フレックスボックスを使用すると、フレックス項目/子がフレックス コンテナによって設定された幅/高さを考慮しない場合がありますか?なぜこうなった?
- CSS グリッドを使用してメーソンリー レイアウト (ウォーターフォール レイアウト) を作成できますか?もしそうなら、どのようにして?
- CSS グリッドと CSS フレックスボックスの用語について説明してください。
-
) は CSS グリッドとフレックスボックスでどのようにレンダリングされますか?フローティング要素 (
float: left | right;
10. CSS トランジションの代わりに CSS アニメーションを使用する必要があるのはどのような場合ですか?この決断を下す基準は何でしたか?
11. CSS コードをレビューしている場合、コード内でよく発生する問題は何ですか?
例:
width: 67px; などのマジック ナンバーを使用するか、
rem 単位の代わりに
em
12. JavaScript でタッチ イベントを検出するにはどうすればよいですか?
- 検出デバイスによるタッチ イベントのサポートについて楽観的ではありませんか? 「はい」の場合、その理由は何ですか?
- タッチ イベントとクリック イベントを比較します。 ###
デバイスがタッチ イベントとマウス イベントの両方をサポートする場合、これらのイベントの正しいイベント順序は何だと思いますか、またはそうすべきだと思いますか?
13. script タグに定義された async
属性と defer
属性はどのような用途に使用されますか?
HTTP/2 モジュールと ES モジュールができましたが、それらは本当に便利でしょうか?
提示されたリストは、インタビュー中に話し合う可能性のある無限のポイントのほんの一部です。 Web コンポーネント、CORS、セキュリティ、Cookie、CSS 変換、Web アセンブリ、サービス ワーカー、PWA、CSS アーキテクチャなど、私たちが考慮していないものが他にもたくさんあります。フレームワークやライブラリに関する具体的な質問もありません。
#関連する推奨事項: #1、
2022 Xiaomi シニア PHP エンジニアの面接の質問 (模擬試験用紙)2、フロントエンドインタビューアリーナ

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ 今日のインターネットの急速な発展の時代において、フロントエンド開発はますます重要になっています。 Web サイトやアプリケーションのエクスペリエンスに対するユーザーの要求がますます高まっているため、フロントエンド開発者は、より効率的で柔軟なツールを使用して、応答性の高いインタラクティブなインターフェイスを作成する必要があります。フロントエンド開発の分野における 2 つの重要なテクノロジーである PHP と Vue.js は、組み合わせることで完璧なツールと見なされます。この記事では、PHP と Vue の組み合わせと、読者がこれら 2 つをよりよく理解し、適用できるようにするための詳細なコード例について説明します。

フロントエンド開発のインタビューでは、HTML/CSS の基本、JavaScript の基本、フレームワークとライブラリ、プロジェクトの経験、アルゴリズムとデータ構造、パフォーマンスの最適化、クロスドメイン リクエスト、フロントエンド エンジニアリング、デザインパターン、新しいテクノロジーとトレンド。面接官の質問は、候補者の技術スキル、プロジェクトの経験、業界のトレンドの理解を評価するように設計されています。したがって、候補者はこれらの分野で自分の能力と専門知識を証明するために十分な準備をしておく必要があります。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

Django は、迅速な開発とクリーンなメソッドを重視した Python で書かれた Web アプリケーション フレームワークです。 Django は Web フレームワークですが、Django がフロントエンドなのかバックエンドなのかという質問に答えるには、フロントエンドとバックエンドの概念を深く理解する必要があります。フロントエンドはユーザーが直接対話するインターフェイスを指し、バックエンドはサーバー側プログラムを指し、HTTP プロトコルを通じてデータと対話します。フロントエンドとバックエンドが分離されている場合、フロントエンドとバックエンドのプログラムをそれぞれ独立して開発して、ビジネス ロジックとインタラクティブ効果、およびデータ交換を実装できます。

Go 言語は、高速で効率的なプログラミング言語として、バックエンド開発の分野で広く普及しています。ただし、Go 言語をフロントエンド開発と結びつける人はほとんどいません。実際、フロントエンド開発に Go 言語を使用すると、効率が向上するだけでなく、開発者に新たな視野をもたらすことができます。この記事では、フロントエンド開発に Go 言語を使用する可能性を探り、読者がこの分野をよりよく理解できるように具体的なコード例を示します。従来のフロントエンド開発では、ユーザー インターフェイスの構築に JavaScript、HTML、CSS がよく使用されます。

Golang とフロントエンド テクノロジーの組み合わせ: Golang がフロントエンド分野でどのような役割を果たしているかを調べるには、具体的なコード例が必要です。インターネットとモバイル アプリケーションの急速な発展に伴い、フロントエンド テクノロジーの重要性がますます高まっています。この分野では、強力なバックエンド プログラミング言語としての Golang も重要な役割を果たします。この記事では、Golang がどのようにフロントエンド テクノロジーと組み合わされるかを検討し、具体的なコード例を通じてフロントエンド分野での可能性を実証します。フロントエンド分野における Golang の役割は、効率的で簡潔かつ学びやすいものとしてです。