![translation](https://cdn.durumis.com/common/trans.png)
これはAIが翻訳した投稿です。
言語を選択
durumis AIが要約した文章
- 新卒開発者の面接でよく聞かれる技術関連の質問をまとめ、メモリ領域、データ構造、データベース、プログラミング、ページ置換アルゴリズム、 プロセスとスレッド、OSI 7層、TCPとUDPなど、様々なテーマについての説明を提供します。
- 各テーマについて、簡潔な概念の説明とともに、代表的な例を挙げて理解を深めます。
- 開発者が面接準備をする際に必要な基本的な技術知識を習得するのに役立つ、有益な情報を提供しています。
非専攻、開発者として生き残る
#14. 新規開発者がよく聞く技術面接の内容
[メインメモリの領域]
- コード領域: プログラムのソースコードが保存される領域で、CPUはコード領域に保存された命令(ソース、関数、制御文)を 取得して処理します。例えば、C言語で書かれたプログラムが実行されると、コード領域にはこのプログラムのソースコードが保存されます。
- データ領域: グローバル変数と静的変数が保存される領域で、プログラム開始とともに割り当てられ、プログラムが終了するまで 消滅しません。例えば、C言語で書かれたプログラムが実行されると、データ領域にはこのプログラムで宣言されたグローバル変数や 静的変数が保存されます。
- スタック領域: プログラムが使用する一時的なメモリ領域で、関数の呼び出しに関連するローカル変数とパラメータが保存されます。関数の 呼び出しとともに割り当てられ、関数が終了すると消滅します。例えば、C言語で書かれた関数を呼び出すと、その関数で使用される ローカル変数やパラメータがスタック領域に割り当てられます。
- ヒープ領域: ユーザーがメモリ空間を動的に割り当てたり解放したりする領域です。例えば、C言語でmalloc()関数を 使用してメモリを動的に割り当てる場合、割り当てられたメモリ領域はヒープ領域に保存されます。
[データ構造]
- スタック: 後入れ先出し(LIFO)方式のデータ構造です。例えば、コンピューターの「戻る」ボタンはスタックに似ています。以前に 訪問したページがスタックに保存され、「戻る」ボタンを押すと、最後に保存されたページが取り出されて表示されます。
- キュー: 先入れ先出し(FIFO)方式のデータ構造です。例えば、銀行で順番待ち番号を受け取って列に並ぶことはキューに似ています。 最初に到着した人が最初に処理され、最後に来た人が最後に処理されるのと同じです。
- ツリー: データを階層構造で表現するデータ構造です。例えば、HTMLのDOMツリーはツリーに似ています。HTML ページの構造はツリーで表現され、ルートノードであるhtmlタグから始まり、子ノードが順番に表現されます。
- ヒープ: 二分木構造の一種で、最大ヒープと最小ヒープに分けられます。例えば、優先順位キューで、最も高い優先順位を持つ データがヒープのルートノードに配置され、次に高い優先順位を持つデータが子ノードに配置されることが最大ヒープの 例です。
[RDBMSとNoSQL]
- RDBMS: 厳格なスキーマでデータを構造的に定義して管理するデータベースです。データを分散して保存することができ、 修正が容易です。例えば、MySQL、Oracle、MS-SQLなどがRDBMSの代表的な例です。
- NoSQL: 柔軟なスキーマでデータを保存して管理するデータベースです。大容量データの処理と保存に適しており、 拡張性も高いです。例えば、MongoDB、Cassandra、HBaseなどがNoSQLの代表的な例です。
[手続き型とオブジェクト指向]
- 手続き型プログラミング: 順次処理が重視されるプログラミング技法です。C、Pascalなどの言語が手続き型の 言語です。
- オブジェクト指向プログラミング: オブジェクト(Object)という概念をベースに、データと手続きを論理的にまとめ処理する方法です。 Java、C++、Pythonなどの言語がオブジェクト指向言語です。例えば、自動車シミュレーションプログラムで自動車を オブジェクトとして表現し、自動車が持つ属性(色、加速度など)をデータとして、自動車が実行する機能(走行、停止など)を メソッドとして表現します。
[オーバーライドとオーバーロード]
- オーバーライド: 親クラスが持っているメソッドを子クラスで再定義して使用するものです。子クラスで 親クラスのメソッドを呼び出すと、親クラスのメソッドよりも子クラスで再定義されたメソッドが実行されます。例えば、 JavaのtoString()メソッドはオーバーライドの例です。
- オーバーロード: 同じ名前のメソッドを複数定義しますが、パラメータの型と個数を異ならせることで、さまざまなタイプの呼び出しに 対応します。パラメータが異なっても同じ名前を持つ複数のメソッドが動作します。例えば、Javaのprint()メソッドはオーバーロードの例です。
[ページ置換アルゴリズム]
- FIFO: 物理メモリにロードされた最も古いページを置き換えます。コンピューターで発生する「タスクバーの閉じる」もFIFO アルゴリズムに似ています。最初に実行したプログラムが最後に表示されて閉じられるのと同じです。
- LRU: 最も長く使用されていないページを置き換えます。頻繁に使用されないアプリの中で古いアプリを終了させる「アプリ終了 アプリ」もLRUアルゴリズムに似ています。
- LFU: 最も少ない参照回数を持ち、ページを置換します。例えば、ブラウザで新しく開かれたタブの中で、使用頻度が最も少ない タブを閉じる「タブの閉じる」機能もLFUアルゴリズムに似ています。
- MFU: 最も多くの参照回数を持ち、ページを置換します。MFUアルゴリズムは、あまり使用されません。
[プロセスとスレッド]
- プロセス: オペレーティングシステムから割り当てられた実行作業単位で、プログラムを意味します。複数のプロセスが同時に実行されると、 各プロセスは独立したメモリ領域とCPUを割り当てられます。
- スレッド: プロセス内で動作する実行単位で、プロセスが割り当てられたリソースを共有しながら実行されます。例えば、Web ブラウザでは、各タブはプロセスではなくスレッドとして動作します。
[OSI 7層]
- アプリケーション層: ユーザーとネットワークを接続する層で、HTTP、FTP、SMTPなどのプロトコルが 含まれます。
- プレゼンテーション層: データの表現方法を定義する層で、JPEG、MPEG、SSLなどのプロトコルが 含まれます。
- セッション層: 通信する2つのシステム間でセッションを管理する層です。
- トランスポート層: データ転送を担当する層で、TCP、UDPなどのプロトコルが含まれます。
- ネットワーク層: データ転送のための経路を設定する層で、IP、ICMPなどのプロトコルが含まれます。
- データリンク層: 物理アドレス(MACアドレス)でデータを転送する層で、Ethernet、Token Ringなどのプロトコルが含まれます。
- 物理層: 物理的な接続と伝送媒体に関する通信を担当する層です。
[TCPとUDP]
- TCP: 接続型サービスで、信頼性のあるデータ転送方法です。3-wayハンドシェイクと4-way ハンドシェイク方式で接続の確立または解除を行います。例えば、Webサイトにログインしたり、ファイルを転送したりする際に、 TCP方式を使用します。
- UDP: 非接続型サービスで、データ転送のための信号手順を行わず、データの信頼性は低いですが、処理速度が速いという 特徴があります。例えば、動画ストリーミングやオンラインゲームなど、高速な転送が重要な場合は、UDP方式を使用します。