技術面接
例
プログラミング言語、フレームワーク、DBの知識や経験
これらの内部実装とか
アルゴリズムやデータ構造に関する問題
アーキテクチャ
これまでの技術的な経験などを問う面接をやめて、実際に0→1で新しいプロジェクトを作るロールプレイを行うようにした
どういう仮定をしたか書いておく
大雑把な計算量の見積もり
1時間で完璧な設計をすることはそもそも求められていない
チームメンバーとして共同で曖昧な問題に対して要件を満たすソリューションを考え出すという、実際の業務の疑似体験を行う
協調性、プレッシャー下での仕事ぶり、良い質問をする能力、etc.
ステップ
要件、事前条件、設計範囲を明確にする
具体的な機能、要件
製品のユーザ数
どの程度のスピートでスケールアップすることを想定しているか
チームメンバーの特性
納期
使用ツール
自社の強み
etc.
設計を提案し、賛同を得る
大まかな構成、モジュール
面接官はチームの一員という感じで
設計の深堀り
コア機能の技術的な深堀り
e.g. チャットシステムを作るなら、待ち時間を減らすためにどうするか、など
複数のアプローチの提案、エラー時の対応、etc.
序盤の方にこの辺をやっておくべき
時間配分
前提を聞く、本題を考える、結論をまとめる、など
進める中で大きく展開が変わる可能性はあるが指標として置いておくといい
今回の面接のゴール
「こういうプログラムを書いてください」のような課題でも色々ある
バグなく実行できるのは大前提で、
パフォーマンスが良いとか
N秒以内に終わること、など
可読性をどれぐらい上げていくかとか
書き捨ての前提なら何でも良いし、
今後もチームでメンテするつもりなら気にしないといけない
とか
業務に即して、こういう要望が来たときにどうするか、のような課題はもっと色々ある
単純に考えれば、その要望を良い感じに実装できれば終わりかもしれないが
例えば、課題の前提を覆すような展開をしたときにゴールがわかりづらくなる
ざっくりいえば、次のアクションが行える状態にする、という感じかmrsekut.icon
業務で、この会議の直後から、あるいは明日から、何をすればよいのかが明確になれば良さそう
ヒアリングし直します、こういう順序で実装に取り掛かります、みたいな
出す側
技術面接の次の面接や、直後のヒアリングシートで反省点を問うのも面白いかもmrsekut.icon
振り返っているかどうかを評価できる
候補者側も、いったん冷静になったうえで、本来ならどう進めた方が良かったかをアピールできる