テンセントC ++インタビューの質問の最初のラウンド:
最後に答えがあり、心配しないでくださいしないでください
1、自己紹介(遊び)
2301と302の違いは?
3、赤黒木データ構造のどのような?赤黒木とBの数との差でありますか?
4、スタックとヒープの違いは?
5、楽観と悲観的ロックの意識のについての話
図6に示すように、構造体の構造体と組合の組合との間の差
7、スリーウェイハンドシェイク、TIME_WAIT原則の具体的な実現?
8、CおよびC ++の機能との違い
9、便利な合意のコンピュータネットワークへの異なる層?
上記のこれらの質問の半分だけ、あなたが最初のラウンドで排除される場合は、サイケC ++、それを継続する必要があります!
テンセントT3C ++開発エンジニアのインタビューの概要
C / C ++ v1.0のインタビューの質問と回答
1.基礎編
1.1。言語
、CおよびC ++の機能との違い?
第二に、C ++の多型を定めます
第三に、達成するための説明C ++仮想関数
四、CおよびC ++のメモリ割り当ての問題
2. [詳細]セクション
2.1ネットワーク
五、4と描かれた3ウェイハンドシェイクフローチャートを振っ
六、接続HTTPSを確立するためのプロセスを説明してください
セブンOSIとの間の対応のTCP / IPプロトコルスタックを描きます
八、ARQプロトコルと手順の原理を説明してください
九、スライディングウィンドウの原則と手順を説明してください
オペレーティングシステム。
X.プロセスの通信オプション?最大のどちらの効率?
スレッド間XI通信
十二、それぞれ、プロセスとスレッドの概念を説明し、類似点と相違点を分析するためにしてください?
データベース
MyISAMテーブルの違い13、MySQLとInnoDBの
フォーティーン、四大特性のInnoDBエンジン
フィフティーン、MyISAMテーブルと高速でのInnoDB selectcount(*)、および理由
シックスティーン、Redisのデータ型がサポートされていますか?
XVII Redisの持続性とは何ですか?いくつかの永続的な方法を持っているのRedis、?どのような長所と短所?
十八、Redisのプロトコル(RESP)は、RESPが何であるか下に説明?特徴は何ですか?....
十九、Redisの持っている建築パターン?その特性についての講演
データの構造
XX、リニアテーブル
XXIバイナリツリー。
XXII、赤、黒の木
XXIII、バランスの取れたツリー
二十四、基数ツリー
XXV、オクトツリー
XXVI、メルケルツリー
アルゴリズム
XXVII、ソートアルゴリズム
选择/冒泡/快速/堆排等
二十八、 一致性哈希算法
二十九、 paxos 算法
三十、 raft 算法
答案部分
1. 基础部分
1.1.语言
一、 C 和 C++的特点与区别?
参考答案:
答:(1)C 语言特点:
1) 作为一种面向过程的结构化语言,易于调试和维护;
2) 表现能力和处理能力极强,可以直接访问内存的物理地址;
3) C 语言实现了对硬件的编程操作,也适合于应用软件的开发;
4) C 语言还具有效率高,可移植性强等特点。
(2)C++语言特点:
1) 在 C 语言的基础上进行扩充和完善,使 C++兼容了 C 语言的面向过程特点,又成为了
一种面向对象的程序设计语言;
2) 可以使用抽象数据类型进行基于对象的编程;
3) 可以使用多继承、多态进行面向对象的编程;
4) 可以担负起以模版为特征的泛型化编程。
二、 阐述 C++的多态
参考答案:
编译时多态:主要指泛型编程
运行时多态:
C++的多态性用一句话概括:在基类的函数前加上 virtual 关键字,在派生类中重写该函数,
运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生
类的函数;如果对象类型是基类,就调用基类的函数。
1) 用 virtual 关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数;
2) 存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的
虚指针。虚表是和类对应的,虚表指针是和对象对应的;
3) 多态性是一个接口多种实现,是面向对象的核心,分为类的多态性和函数的多态性。;
4) 多态用虚函数来实现,结合动态绑定.;
5) 纯虚函数是虚函数再加上 = 0;
6) 抽象类是指包括至少一个纯虚函数的类;
纯虚函数:virtual void fun()=0;即抽象类,必须在子类实现这个函数,即先有名称,没
有内容,在派生类实现内容。
三、 阐释 c++虚函数的实现
参考答案:
简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与
之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。
例:
其中:
Bに保存された仮想関数テーブルB :: fooというB ::バーと2つの関数ポインタ。
仮想関数Bに格納されたB D仮想関数テーブルの両方から継承:: FOO、(オーバーライド)基底クラス、仮想関数が書き換え
B ::バーD ::バーの数だけでなく、新しい仮想関数D :: quz。
仮想関数テーブル構造プロセス:
コンパイラの観点から、仮想関数テーブルB良い構成D仮想関数テーブル構造プロセスは、比較的複雑です。下記の
構成D(参考)の仮想関数テーブルの方法。
仮想関数呼び出し
一例として、次のプログラムで:
取得するあまり答えの一部ではなく、それを示すために一つ一つの後、あなたはPDF答えてこの部分テンセントT3レベルの表面を取得したい場合は、私ができるプライベートの手紙「インタビュー」そのため、最初にすべての私のプライベートの手紙ああに注意を払います
PDF文書に編成された質問の答え+に直面しています
取得+スカート:7770.28506
プログラミング、ダイナミックインターネットに焦点を当てます。楽しむために皆のための技術、経験、経験(データ構造とアルゴリズム、ソースコード解析、など)の最後の概要は、ここでは技術に限定されるものではありません!そこの職場体験、生命の理解だけでなく、顔ワープ。懸念上のボタンをクリックして、初めて提供されます!