💪

【JavaScript面接対策】頻出20問+Macでの開発環境Tips🎁

に公開

こんにちは!技術面接シリーズ第2弾として、今回は JavaScriptの定番質問20問+コードでの解説 をまとめました。最後には macOS 上で Docker を使わずに環境構築できる ServBay の実用Tips もあります。

面接直前に「そういえば…」と焦らないよう、サクッと確認できる内容になっています。
未経験からエンジニアを目指す方や、面接に備えたい方に向けた記事ですので、ぜひ一読ください✨


1. IIFE(Immediately Invoked Function Expression)とは?

即時実行関数の略で、定義後にすぐ実行される関数です。グローバルスコープを汚さず済むため重宝されます。

(function() {
  let msg = "Hello IIFE!";
  console.log(msg);
})();

アロー関数版もOK:

(() => console.log("Arrow IIFE"))();

2. JavaScript のループ構文一覧

  • for(標準ループ)
  • while
  • do...while
  • forEach
  • for...in
  • for...of
const nums = [10, 20, 30];
for (let i = 0; i < nums.length; i++) console.log(nums[i]);
nums.forEach(n => console.log(n));
for (let n of nums) console.log(n);

3. 変数の Hoisting とは?

変数宣言や関数宣言がスコープの先頭に「巻き上げ」られる挙動を指します。

console.log(greet()); // OK
function greet() { return "Hello"; }

console.log(a); // undefined
var a = 5;
console.log(b); // ReferenceError
let b = 10;

4. ES6 の主な新機能

  • let / const
  • アロー関数 () => {}
  • テンプレート文字列 `Hello ${name}`
  • 分割代入、Promise、import/export、class など
const person = { name: "Alice", age: 30 };
const { name } = person;
console.log(`こんにちは、${name}さん`);

5. JavaScript の基本データ型

  • プリミティブ型:NumberStringBooleanBigIntSymbolNullUndefined
  • 参照型:Object
console.log(typeof null); // "object"

6. イベントループの仕組み

JavaScript はシングルスレッドですが、イベントループと非同期キューで非同期処理を実現します。

console.log("Start");
setTimeout(() => console.log("Timeout"), 0);
Promise.resolve().then(() => console.log("Promise"));
console.log("End");

【出力順】Start → End → Promise → Timeout


7. 閉包(Closure)の概要

関数が作られたスコープを覚えている仕組みです。

function outer() {
  let x = 10;
  return function inner() {
    console.log(x);
  };
}
const fn = outer();
fn(); // 10

8. var / let / const 違い表

宣言方法 スコープ 再定義 再代入
var 関数
let ブロック 不可
const ブロック 不可 不可(但し中のプロパティは変更可)

9. map, filter, reduce の使い方

const nums = [1, 2, 3, 4];
const doubles = nums.map(n => n * 2);
const evens = nums.filter(n => n % 2 === 0);
const sum = nums.reduce((acc, n) => acc + n, 0);

10. Prototype(プロトタイプ)の説明

JavaScript の継承モデルはプロトタイプチェーンで実現されます。

const obj = {};
console.log(obj.toString()); // Object.prototype 由来

11. Getter / Setter の使い方

const obj = {
  _x: 0,
  get x() { return this._x; },
  set x(v) { this._x = v; }
};
obj.x = 5;
console.log(obj.x); // 5

12. Callback と Promise の違い

Callback は関数を渡して非同期を制御し、Promise は状態管理とチェーンが可能です。

new Promise(resolve => {
  setTimeout(() => resolve("done"), 100);
}).then(console.log);

13. async / await の基本

Promise をより直感的に扱える文法糖です。

async function fetchData() {
  const res = await fetch("/api/data");
  const data = await res.json();
  console.log(data);
}

14. null / undefined / 未宣言変数 の違い

  • null → 意図的に「空」
  • undefined → 宣言済だが未代入
  • 未宣言変数 → ReferenceError

15. Singleton(シングルトン)パターン

単一インスタンスを保持し、再利用可能なデザインパターンです。

const Singleton = (() => {
  let instance;
  return {
    getInstance: () => {
      if (!instance) instance = {};
      return instance;
    }
  };
})();

16. this の挙動説明

  • 通常関数 → 呼び出し方次第で異なる
  • アロー関数 → 定義時スコープの this を保持
const obj = { val: 1, print() { console.log(this.val); } };
obj.print(); // 1

17. OOP vs FP(面向对象 vs 関数式)

  • OOP:状態と振る舞いをカプセル化
  • FP:関数を第一級とし、不変性を重視

18. 高階関数とは?

関数を引数または戻り値とする関数のことです。

function twice(fn, x) { return fn(fn(x)); }

19. オブジェクトリテラルとクラスの違い

  • リテラル → 単一オブジェクト
  • クラス → 複数インスタンス生成向け
class Person {
  constructor(name) { this.name = name; }
  greet() { return `Hello, ${this.name}`;}
}

20. Bonus 🎁:Docker不要!Mac 開発環境は ServBay でラクラク

Mac で PHP・MySQL・Node.js 等の環境構築に時間がかかっていませんか?
そんなとき、ServBay が超便利です。

  • macOSネイティブ、軽量で立ち上がりが速い
  • GUIでクリック操作だけで環境構築
  • SSL付きのローカル環境も簡単
  • 複数のサービス/バージョンを手軽に切り替えられます

面接対策や個人開発、複数案件に関わるときに本当に助かりますよ🎯


🏁 おわりに

面接では予想外の質問で焦ることもありますが、事前準備があれば自信を持って答えられます。
この記事が、JavaScriptの基礎を整理したい方や本番に備えたい方のサポートになれば幸いです。

ご指摘・ご意見・「ここがもっと知りたい」などコメントいただけると嬉しいです🙏
最後までお読みいただき、ありがとうございました🍀


タグ:
#JavaScript #面接対策 #未経験エンジニア #Web開発 #macOS開発環境


Discussion