ホームページ ウェブフロントエンド jsチュートリアル フロントエンドの面接を受けたいと聞きましたが?

フロントエンドの面接を受けたいと聞きましたが?

Mar 01, 2017 pm 02:48 PM
フロントエンド インタビュー

ゴールド、スリー、シルバー、フォーシーズンズ。近年人気の分野であるフロントエンドは、最近猛烈な勢いで面接を行っており、多くの興味深い面接官や興味深い面接の質問に会いました。これを助けるためにここにいます。言い換えてみましょう。

以下は私の友人からの話で、実際には私ではありません。

for (var i = 0; i < 5; i++) {
  console.log(i);
}
ログイン後にコピー

「Xiaowei、これらのコード行が何を出力するのか教えてください。」

面接官がこれらのコード行を Sublime に入力したとき、私は少し混乱しました。ハマグリ?これが最も単純なループではないでしょうか?これは私が見た質問とよく似ていますが、質問者は書き終えていませんでしたか?有毒です。

「0から4をそのまま出力すればいいのに…」と私は力なく言いました。

「はい、緊張しないでください。この質問には罠はありません。ただ気軽に書いています。」

(すみません?面接官、冗談を言いに来たのですか?死ぬほど怖いです!)

「それでは、これらのコード行が何を出力するかを見てください。」

for (var i = 0; i < 5; i++) {
  setTimeout(function() {
    console.log(i);
  }, 1000 * i);}
ログイン後にコピー

うーん、何ということですか、なぜ私が何度も覚えた終わりの質問ではないのですか? 考えさせてください。 setTimeout は実行を遅らせるので、console.log が実行されると、実際には 5 になります。 はい、それだけです。これほど単純なことを行うのがどうしてこんなに難しいのでしょうか。

「5 の出力を開始し、その後 1 秒ごとに 5 を出力し、合計 5 つの 5 を出力する必要があります。」

「はい、0 から 4 を出力できるようにするには、どう変更すればよいでしょうか?」私がよく知っているものです。はい、クロージャを追加するだけで解決します。安定しています。

for (var i = 0; i < 5; i++) {
  (function(i) {
    setTimeout(function() {
      console.log(i);
    }, i * 1000);
  })(i);
}
ログイン後にコピー

「わかりました。この i を削除するとどうなるか教えていただけますか?」

for (var i = 0; i < 5; i++) {
  (function() {
    setTimeout(function() {
      console.log(i);
    }, i * 1000);
  })(i);
}
ログイン後にコピー

「この場合、i への内部参照はなく、出力は実際には 5 になります。」

"とてもわかりました。変更して、出力がどうなるか見てみましょう?」一体、何が起こっているのか、考えさせてください。ここでは、即時実行関数が setTimeout に渡されます。さて、setTimeout は関数または文字列をパラメータとして受け入れることができるので、ここでの即時実行関数とは何でしょうか? これは未定義である必要があります。これは次と同等です:

for (var i = 0; i < 5; i++) {
  setTimeout((function(i) {
    console.log(i);
  })(i), i * 1000);
}
ログイン後にコピー

そして、即時実行関数はすぐに実行されるため、すぐに出力される必要があります。

「すぐに 0 から 4 が出力されるはずです。」

「ああ、悪くないです。最後の質問ですが、Promise について知っていますか?」

「大丈夫です...」

「OK、それから試してみてください。」質問「

setTimeout(undefined, ...);
ログイン後にコピー

なんてことだ!」 ! ! !静かにしたい!

この質問は私の JavaScript の実行メカニズムを調べる必要があります。私の考えを整理させてください。

最初に setTimeout が発生するため、最初にタイマーが設定され、タイマーが終了した後、関数が渡されてタスクキューに配置されるため、最初に 1 が出力されることはありません。

次に Promise があり、内部の関数は直接実行されるため、 2 3 が直接出力されるはずです。

次に、Promise の then を現在のティックの最後に配置する必要がありますが、まだ現在のティック内にあります。

つまり、最初に 5 が出力され、次に 4 が出力されるはずです。

最後に、次のティックは 1 です。

「2 3 5 4 1」

「わかりました、次の面接を待ちましょう。」

とても簡単です!お母さんはもう私の面接について心配する必要はありません。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Nodeのメモリ制御に関する記事 Nodeのメモリ制御に関する記事 Apr 26, 2023 pm 05:37 PM

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ Mar 16, 2024 pm 12:09 PM

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

フロントエンド開発に Go 言語を使用するにはどうすればよいですか? フロントエンド開発に Go 言語を使用するにはどうすればよいですか? Jun 10, 2023 pm 05:00 PM

インターネット技術の発展に伴い、フロントエンド開発の重要性がますます高まっています。特にモバイル デバイスの人気により、効率的で安定しており、安全で保守が容易なフロントエンド開発テクノロジーが必要です。 Go 言語は、急速に発展しているプログラミング言語として、ますます多くの開発者によって使用されています。では、フロントエンド開発に Go 言語を使用することは可能でしょうか?次に、この記事ではフロントエンド開発にGo言語を使用する方法を詳しく説明します。まずはフロントエンド開発にGo言語が使われる理由を見てみましょう。多くの人は Go 言語は

フロントエンドの面接官からよく聞かれる質問 フロントエンドの面接官からよく聞かれる質問 Mar 19, 2024 pm 02:24 PM

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

Django はフロントエンドですか、バックエンドですか?それをチェックしてください! Django はフロントエンドですか、バックエンドですか?それをチェックしてください! Jan 19, 2024 am 08:37 AM

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

golang はフロントエンドとして使用できますか? golang はフロントエンドとして使用できますか? Jun 06, 2023 am 09:19 AM

Golang はフロントエンドとして使用できます。Golang は、フロントエンド アプリケーションなど、さまざまなタイプのアプリケーションの開発に使用できる非常に多用途なプログラミング言語です。Golang を使用してフロントエンドを作成することで、 JavaScript などの言語によって引き起こされる一連の問題、たとえば、型安全性の低さ、パフォーマンスの低下、コードの保守の困難などの問題です。

C# 開発経験の共有: フロントエンドとバックエンドの共同開発スキル C# 開発経験の共有: フロントエンドとバックエンドの共同開発スキル Nov 23, 2023 am 10:13 AM

C# 開発者としての私たちの開発作業には、通常、フロントエンドとバックエンドの開発が含まれますが、テクノロジーが発展し、プロジェクトが複雑になるにつれて、フロントエンドとバックエンドの共同開発はますます重要かつ複雑になってきています。この記事では、C# 開発者が開発作業をより効率的に完了できるようにする、フロントエンドとバックエンドの共同開発テクニックをいくつか紹介します。インターフェイスの仕様を決定した後、フロントエンドとバックエンドの共同開発は API インターフェイスの相互作用から切り離せません。フロントエンドとバックエンドの共同開発をスムーズに進めるためには、適切なインターフェース仕様を定義することが最も重要です。インターフェイスの仕様にはインターフェイスの名前が含まれます

Go 言語のフロントエンド テクノロジーの探求: フロントエンド開発の新しいビジョン Go 言語のフロントエンド テクノロジーの探求: フロントエンド開発の新しいビジョン Mar 28, 2024 pm 01:06 PM

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

See all articles