アリC++エンジニア面接小記

2973 ワード

テキストリンク:http://harttle.com/2014/05/05/ali-intern2014.html
アリババの2014実習生の面接は終わったばかりです.満腹になって一日中何もしていないで、試してみる態度を持って、一周して、経験をここに分かち合って、意味がなくて官を見て許してもらうのは避けられません.私はC++バックグラウンド開発、フロントエンド開発を面接します.ここで経験と教訓をまとめる.
私は研究開発エンジニアの実習を申し込んで、記入する内容が多くて、長い間記入して、アリは私にオンライン筆記試験の機会を与えました.
筆記試験の問題の多くは数学の論理の基礎とデータの構造の問題で、あまりコンピュータの基礎の概念に偏りません.合格しました.北京の面接を誤報したので、中科院blablablaに行くように知らせてくれました(応募サイトの右バグは、面接都市を選んだ後は変更できません.何でも変更できますが、面接都市は変更できません).その後、コミュニケーションを経て、広州大学城に面接に行かせました.
それから広州の大学城に駆けつけた.ここは黄埔軍学校の跡地に隣接しており、大学城は川の水に囲まれており、良い場所でもある.すぐに私を中に入れました.中には十数個の小さなテーブルがあり、面接官と応募者がペアで話しています.
まず、もちろん自己紹介ですが、履歴書の項目を少し聞きました.面接官はniceで、順番に進んでいます.スレッドとプロセスの違いなど、オペレーティングシステムについて質問しました(面接では必ず質問します!)この部分は深くありません.そして主にC++部分に入ります.
  • オートロックとは何か分からなかったので、オブジェクトの構造解析動作を利用してリソースロックを自動的に管理する例を書いてくれた.そして私はコンストラクション関数にlock(sth)、コンストラクション関数にunlock(sth)と書きました.後で彼が私にオペレーティングシステムと対話する部分に答えることを望んでいることを知って、私はオペレーティングシステムが提供するロックのシステム呼び出しは2つの状況にほかならないと言って、1つは直接trueあるいはfalseに戻って、私たちは急いで待っています;2つ目は、ロックが取得されるまで、呼び出しでプロセスをブロックすることである.これで面接官はOKと言います.
  • コンストラクション関数で虚関数を呼び出すと何か問題が発生する.私はコンパイルが間違っていると言って、答えが間違っています.問題はありませんが、このときの虚関数テーブルポインタは常に現在のタイプを指します.Effective C++ではDon’tがそうすることを指摘している.
  • 単鎖表を逆にし、headポインタを与え、C++関数を書き出します.私はずっとこのことをまじめに見たことがないと思っていたが、完全に書いていなかった.面接官はniceにどうすればいいか説明してもらったが、一瞬にして思いついた.2つのチェーンテーブルheadを維持します.1つは逆方向のチェーンテーブルヘッダを指し、もう1つは逆方向のチェーンテーブルヘッダを指します.一度遍歴すればいい.
  • チェーンテーブルの中間ノードを探し出す.2つのポインタを使用して、1サイクルでAが2ステップ、Bが1ステップ、Aが先頭にある場合、Bは中間ノードです.実は1つのポインタを2回遍歴させるのは時間の複雑さが同じで、コードの冗長性にすぎない.面接官はこれに関心がない~
  • チェーンテーブルのノードをすばやく削除し、ポインタがあります.そのnextノードでノードの内容を上書きし、後ろのチェーンテーブルを接続します.
  • 5 TLに関する知識.Stl容器のパラメータallocateは何に使いますか?これは、演算プロセスよりも小さい値を指定する関数オブジェクトです.MapのKeyには何か要求がありますか?最初は私が答えを繰り返すことができなくて、彼は引き続き聞いて、答えは必ず<演算子を再ロードしなければならなくて、OK.
  • スマートポインタはどのように実現されているのか、あなたはスマートポインタを実現します.コンストラクション関数でポインタ付与を行い,コンストラクション内delete.実装getメソッド、コピーコンストラクタ、付与演算子の動作など、実はまだたくさんあります.
  • static_castconst_castdynamic_cast区別、質問なしreinterpret_cast.1つ目は強制暗黙変換であり、比較的安全である.2つ目は定量的ではありません3つ目は安全なダウンシフト(safe downcasting);最後は低レベル変換です.当時はそんなにはっきりしていなかった.の
  • どんなC++ライブラリを使ったことがありますか?gsl.面接官は聞いたことがないと言った.Boost、彼らは一日中使っているようです.

  • それから私を外に出て待たせて、それから二面です.面接官は少し忙しくて、よく電話をかけてきます.私のプロジェクトの経歴を見て、たくさん聞きました.それから目の前に出したらどうですか、私は言ったでしょう(注意して、これは間違いです)!そこで目の前に端を出し続けた.私は多くのweb開発、js開発をしたことがありますが、フロントエンドについてはシステムの勉強がありません.結果は悪かった.私はこのいくつかの問題を羅列します.
  • 優れた先端開発者にはどのような資質があると思いますか?
  • HTML 5とCSS 3についてどのくらい知っていますか?彼は聞き続けるだろう.
  • 両端固定幅、中間適応を実現.
  • JavaScript最適化はどうすればいいですか?
  • ドメイン間要求制限の処理方法.
  • 最後に質問はありますか?

  • フロントエンドの勉強方法を聞いた.面接官はまじめで、尊敬すべき技術男です.最新のフロントエンドのブログと文章をもっと読んで、新しい技術をもっと理解するように教えてください.そして、基本的な本は勉強し、面接で聞かれたことは基本的に答えることができます.
    最後に感じをまとめると、まず自分が何をしたいのかを知る必要があります.履歴書は必ず口を合わせなければならない.自己紹介は準備が必要です.最後の瞬間まで怠らないでください.
    OK~終わりました.後の同行者たちの成功を祈る.幸運を祈ります.