2008年01月27日

マイクロソフト社の面接試験

マイクロソフト米国本社の実地面接に行ったけど質問ある?

マイクロソフト社の面接試験を受けた人の話。
ビルゲイツの面接試験に出てくるような試験がまだ行われているようだ。

試験問題についても書かれているが、どれも難しい。
考え方を説明するだけならともかく、その場でプログラミングしなさいというのはかなりきつい。


マイクロソフト米国本社の実地面接に行ったけど質問ある?
linked-listにループが存在するかどうかを確認するコードを書き、それの効率性を答える問題や

・チェックのタイミングはデータ挿入時が効率的。
・チェック方法は同一ポインタが既にリストに無いかどうかを調べる。
・チェック用のテーブルを作っておき、毎回リストを辿らない。
データ取得時にチェックする場合だと、チェック用テーブルを作りながら辿ることになるかな。


マイクロソフト米国本社の実地面接に行ったけど質問ある?
linked-listを効率的に逆向きにする問題等が出ました。

予め双方向リストとして実装しておく一般的だが、それが効率的かと言われると効率的ではない気がする。

単方向のリストで順序を逆にするには、以下の処理でいけそうだ。

1.次の要素へのポインタを保存しておく
2.次の要素へのポインタをnullにする(最後の順番にする)
3.保存していたポインタの要素を参照する
4.次の要素へのポインタを保存しておく
5.次の要素へのポインタを保存していた前の要素のポインタにする
以降、4と5をリストの最後に辿り着くまで繰り返す。


マイクロソフト米国本社の実地面接に行ったけど質問ある?
有名なのも挙げるなら、一日何十ギガバイトの単位でたまるGoogleの検索ログの中から、
一番検索されたものTOP3を見つけ出すアルゴリズムを組み立てろ、とかでしょうか。

まず、正確なTOP3が知りたいのか、誤差が許されるのかが疑問。
誤差があっても良いのなら、全体の中から一部だけを集計対象にする。
さらに、集計対象の中から全件調べる前に、TOPの候補になるものをリストアップする。
集計対象を調べる時は、TOP候補以外はカウントしない。


マイクロソフト米国本社の実地面接に行ったけど質問ある?
なぜJavaでは多重継承が許されず、C++ではどういう仕組みでそれが可能なのか

C++では親クラスの各種情報が子クラスのインスタンスに入ってて、Javaでは入ってなかったような?

これを面接で聞かれたらまず答えられない。


マイクロソフト米国本社の実地面接に行ったけど質問ある?
質問はループを使わずに与えられたunsigned integerが2の乗数であるかを
一番簡単で計算の速い方法で求めよということでした。

自分は、与えられた数字が0であるかを最初にチェックした後、
(x-1)&xの答えが0であるなら2の乗数である、というような回答で正解を頂きました。

これはこの答えしか思いつかない。



スレ主の会話のやりとりを読む限り、非常に優秀な人なのが伝わってくるが、それでも不採用だという。
こういう採用試験を通過できる人はどんな人達なのだろうな。

ビル・ゲイツの面接試験―富士山をどう動かしますか?
posted by kozi at 06:37| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。