C ++の技術評価から何を期待できますか?[閉まっている]


10

ジュニア開発者として、主にC ++を使用するジョブの技術テスト/評価を依頼されました。これは私の最初のテスト/評価であり、2時間です。

私のC ++は、PHPで最近プロジェクトを行っているので、少し錆びています。

これは英国の会社ですが、候補者の技術テストはどこでもほぼ同じだと思います。

これらのテストの1つで何を期待できますか?


1
この質問は、PHPのためですが、答えが適用されます。programmers.stackexchange.com/questions/73654/...
エリック・ウィルソン

回答:


5

それはC ++なので、何でも期待できます。

通常、これにはトリックの質問と、ある種の多態性の質問が含まれます。

しかし、単純なものになる可能性もあります。

「デストラクタを仮想化する理由」、「揮発性」、「非現実的な問題のためのクラスの設計」、「リンクリストの実装」、「文字列の反転」などの質問に答える準備をします。


「何にmutableキーワードを使うの?」と付け加えます 何でもカテゴリに。
トム

5

これは純粋なC ++テスト(つまり、ある場合ではないのWindows / MFC / C ++テスト管理)、その後、スコットマイヤーさんに数時間または数日を過ごす効果的なC ++、あなたは非常によく行う必要があります。テンプレートとSTLについては説明していませんが、興味がある場合は、2時間のテストは行わないでしょう。もう数年になりますが、私はC ++開発者に頻繁にインタビューをしていました。効果的なC ++のアイデアはC ++プログラミングの基本ですが、それを知っている候補者は約10%にすぎません。


1
書籍の推奨事項の+1-スコットマイヤーのより効果的なC ++の本はスキップしてください。私がプログラマーにインタビューするのに使用したとき、私はまた、知的な正直さ(あなたが知らないことを知っていることを知っていることを知っていることを知っていますか)を見つけたり、どこを見つけるか知っていますか?答え。(もしC ++で働いていたと主張している誰かにインタビューするなら、質問ははるかに難しいでしょう)。履歴書に他の言語のプログラミングスキルを示唆するものがなかった場合は、簡単なプログラムを作成して、コーナーケースを正しくカバーしているかどうかを確認するようにお願いします。
MZB 2011

私はコンピューティングの卒業生であり、C ++のコンソールでプログラムを実行する方法を教えられました。バイナリソートツリーの実装や二重にリンクされたリストなどについて教えられました。そこで、抽象クラス、継承、多態性についても教えられましたが、それらを実装する方法。私はC ++の実務経験がないので、仕事の役割は卒業生のため、彼らが私に何を期待しているのかわかりません。
ベアブレッド2011

4

まあそれはそれらがあなたがグーグルを使用できるようにするかどうかに依存します。:P

私は通常、自分の周りのツールを使用できる限り、技術テストでかなりうまくいきます。彼らが私にコードブラインドをコードしてほしいと思ったとき、私が困ったときにそれをコードします。だから私があなたに与えることができる最高のアドバイスは自宅でコードブラインドです...私たちが覚えていなくても簡単にチェックできるので、私たちが当たり前だと思っている些細なことを忘れないでください。

また、通常は彼らが必要とする具体的なスキルをチェックするので、何に取り組むかわかっている場合は、それに集中してください。

(これは私の一般的な経験ですが、私は英国出身ではありません)


理論、ポリモーフィズム、継承についてはどうでしょうか。私は卒業のためだけにその理論を知っていますが、C ++でそれを実装する方法がわかりません
ベアブレッド

それらの実装はそれほど難しくありません。おそらく、非常に迅速に確認できます。重要な部分は、それらをいつ使用するのが適切か、いつ必要になるかを知ることです。これらは実際の前提条件というより機能的なパターンです。つまり、それらを使用しなくても逃げることができますが、必要に応じてそれらを知っていることが期待されます。
AJC、2011

@bearbread:理論自体はあまり価値がありません。設計パターンについて読んで、それらを実装してみてください。
Karoly Horvath、2011

MVC for PHPのようなデザインパターンを知っていますが、それはどういう意味ですか?
ベアブレッド2011

1

練習コードkata単純なアルゴリズム(リングバッファー、ハノイタワー、バイナリ検索など)を選択し、最初からコーディングします。次に、次回、次回、そして次回、そしてそれを繰り返します。各反復でそれらをどのように改善できるかを見てください。


1
+1。また、もう少し経験のある友達と一緒にやってください。順番にプログラムに取り掛かってください。どちらも新しいことを学びます。
トム

0

何でも期待できるのは本当です。

テストはC ++だと彼らは言ったが、おそらくそれは実際に彼らがテストで使用するC ++のCサブセットである(標準ライブラリ文字列の代わりにchar配列を使用する)。これを知るのは難しいでしょう。

本当にC ++の場合は、基本を確認することをお勧めします。

  • クラス、変数、配列
  • 参照、ポインタ(およびデフォルトで使用しない理由)
  • constキーワードの使用法
  • 指向オブジェクトの概念(継承、ポリモーフィズム...)
  • テンプレート

次に:

  • 標準ライブラリの使用法(std :: string、std :: vector、コンテナー、...)

0

これまで投稿されたものは素晴らしいですが、何かとストーリーを追加します!C ++で知っていることをソフトウェア会社のドメインの問題に適用する練習をするでしょう。C ++のすべてを理解していればすばらしいことですが、問題に適用できない場合、会社にとって役に立たないことになります。これはジュニア開発者の立場なので、C ++に関するすべてを知っているとは思わないでしょう。

私は先週、最初の開発者向けの最初の技術テストを受けましたが、その結果に驚いていました。私はFizzBu​​zzのようなものや何かもっと骨の折れるもの(これはJavaの場合です)を期待していましたが、私が見つけたのは、ファイルを提供し、それを新しい形式に解析してもらいました。それが仕事の一部でした。その上、彼らは私にグーグルと彼ら自身の図書館を使わせた。結論としては、C ++を知る必要がありますが、テストがどのようなものか知りたい場合は、申請しているポジションのドメインを調べて、そのドメイン内の何かに向けてC ++を実装することに取り組みます。


C ++プログラマーの1%未満が言語のすべてを知っていると思います:)未定義/未指定/実装定義の動作のすべてのケースを1つの例として取り上げます。

0

あなたは:

  1. コードを書く
  2. 多肢選択
  3. 直接面接

コードを書くとき

彼らはあなたが知っている(そして使う)ことを期待します:

  • RAII
  • 3つのルール
  • スマートポインターを理解する

彼らはおそらくあなたをテストします:

  • 継承
  • 仮想機能
  • ストリームとの間のシリアル化
  • 算術演算子をオーバーロードします(実際にはあまり使用されませんが、テストを書くのは簡単です)。

あなたが運が悪いと彼らは考えるかもしれません

  • 多重継承と仮想基本クラスは知っておくべきものです。
    • そうではなく、何人かの人々が狂ったように夢中になります。

複数選択の場合

  • すべてのOO用語を理解する
  • OOを実装するC ++の方法を理解する

対面インタビュー

  • 上記のすべて。
  • 再帰の知識
  • 再帰をループに変換する方法
  • Big O()の複雑さを推定する方法
  • 標準のソートアルゴリズム(単なるバブルではありません)。

1
私はC ++ではなくCプログラマなので、話はわかりませんが、RIAAと3つのルールについて聞いたことがありません。ただし、RAII(リソースの取得は初期化です。つまり、デストラクタは独自の混乱をクリーンアップする必要があります)について聞いたことがあります。コードにコピーctr、オーバーロード割り当て演算子、またはデストラクタが必要な場合は、3つすべてが必要です。あなたのスキルのテストではなく、プログラミングスラングの安っぽい雑学であるインタビューは、会社について何か悪いことを言っているように私には思えます。

1
同様に、もし彼らが多重継承と再帰について尋ねたら、私は彼らのコードベースが大きな混乱であると思います。一般的な並べ替えアルゴリズム、再帰の展開、オブジェクトのシリアル化などをすべて知っていると彼らが期待している場合は、会社について何か悪いことも述べています。彼らはロボットの開発者を期待していませんか?現実の世界では、そのようなものを使用する前に調べます。これらすべての背後にある理論を知っていても、それを調べて、何かではなく最適なソリューションを使用するようにしたので、自分で思いつきました。

@Lundin:シルキーな名前を知っている必要はありませんが、原則を知っている必要があります。ここでそれらを言及することにより、検索が容易になります。ソートアルゴリズムを知る必要があるのは、どのアルゴリズムをいつ使用するか(さらに重要なのはその理由)を知る必要があるためです(ロボットができることはできませんが、人間は非常にうまくできます)。
マーティンヨーク

再帰や多重継承には本質的に問題はありません。問題は、開発者がそれを使用しすぎている(そしてそれを誤って行っている)ことです。一部の問題は、再帰を使用して(簡単に)解決できます(ツリー構造の深さを最初に解析する)。
マーティンヨーク、

@Lundin:devblog.seomoz.org/2011/10/679を参照してください
マーティンヨーク

-1

私は最後のインタビューに参加しました:

値/参照/ポインタでオブジェクトを関数に渡すことと、それを行う場所と理由の違い。

整数の最後の2ビットを入れ替えます(例:RGBAからRGAB)。

RIAAとは

テンプレートメタプログラミングを定義する:「TMPでこの問題を解決する」という点で質問を受けるかもしれません。

mutable、volatile、constなどの意味は何ですか?すべてのキーワードを知っています。

多重継承....何度も何度も。

マルチスレッディング:プロデューサーコンシューマーおよびバッファーされた共有メモリオブジェクト。

さらにいくつかの周辺の質問:

UMLの集約と構成

デザインパターン:シングルトンを実装する... MVCの一般的なコンポーネントは何ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.