투잡뛰는 개발 노동자[非エンジニア、開発者として生き残る] 14. 新規開発者のよくある技術面接内容要約
非専門家、開発者として生き残る
#14. 新規開発者のよくある技術面接内容
- コード領域:プログラムのソースコードが保存される領域で、CPUはコード領域に保存されている命令(ソース、関数、制御文)を取り出して処理します。例えば、C言語で記述されたプログラムが実行されるとき、コード領域にはこのプログラムのソースコードが保存されています。
- データ領域:グローバル変数と静的変数が保存される領域で、プログラム開始とともに割り当てられ、プログラムが終了するまで消滅しません。例えば、C言語で記述されたプログラムが実行されるとき、データ領域にはこのプログラムで宣言されたグローバル変数または静的変数が保存されます。
- スタック領域:プログラムが使用する一時的なメモリ領域で、関数の呼び出しと関連するローカル変数とパラメータが保存されます。関数の呼び出しとともに割り当てられ、関数が終了すると消滅します。例えば、C言語で記述された関数を呼び出すとき、その関数で使用するローカル変数またはパラメータがスタック領域に割り当てられます。
- ヒープ領域:ユーザーがメモリ空間を動的に割り当てたり解放したりする領域です。例えば、C言語でmalloc()関数を使用してメモリを動的に割り当てるとき、割り当てられたメモリ領域がヒープ領域に保存されます。
- スタック:後入れ先出し(LIFO)方式のデータ構造です。例えば、コンピュータの「戻る」ボタンはスタックと似ています。以前にアクセスしたページがスタックに保存され、「戻る」ボタンを押すと、最後に保存されたページが取り出されて表示されるのと似ています。
- キュー:先入れ先出し(FIFO)方式のデータ構造です。例えば、銀行で整理券を受け取って待ち行列に入るのがキューと似ています。最初に到着した人が最初に処理され、最後に来た人が最後に処理されるのと似ています。
- ツリー:データを階層構造で表現するデータ構造です。例えば、HTMLのDOMツリーはツリーと似ています。HTMLページの構造がツリーで表現され、ルートノードであるhtmlタグから始まり、子ノードが順番に表現されます。
- ヒープ:二分木構造の一つで、最大ヒープと最小ヒープに分けられます。例えば、優先度キューで最も高い優先度を持つデータがヒープのルートノードに位置し、次に高い優先度を持つデータが子ノードに位置しているものが最大ヒープの例です。
- 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を割り当てられます。
- スレッド:プロセス内で動作する実行単位で、プロセスが割り当てられたリソースを共有して実行されます。例えば、ウェブブラウザでそれぞれのタブはプロセスではなくスレッドとして動作します。
- アプリケーション層:ユーザーとネットワークを接続する層で、HTTP、FTP、SMTPなどのプロトコルが含まれます。
- プレゼンテーション層:データの表現方法を定義する層で、JPEG、MPEG、SSLなどのプロトコルが含まれます。
- セッション層:通信する2つのシステム間でセッションを管理する層です。
- トランスポート層:データ転送を担当する層で、TCP、UDPなどのプロトコルが含まれます。
- ネットワーク層:データを転送するための経路を設定する層で、IP、ICMPなどのプロトコルが含まれます。
- データリンク層:物理的なアドレス(MACアドレス)によってデータを転送する層で、Ethernet、Token Ringなどのプロトコルが含まれます。
- 物理層:物理的な接続と伝送媒体に関する通信を担当する層です。
- TCP:接続型サービスで、信頼性の高いデータ転送方式です。3ウェイハンドシェイクと4ウェイハンドシェイク方式で接続の設定または解除を行います。例えば、ウェブサイトでログインしたり、ファイルを転送したりする場合、TCP方式を使用します。
- UDP:非接続型サービスで、データ転送のための信号手順を踏まず、データの信頼性は低くなりますが、処理速度が速いという特徴があります。例えば、動画ストリーミングやオンラインゲームなど、高速転送が重要な場合は、UDP方式を使用します。
コメント0