靠譜的C++程序員,所謂的靠譜,其實也就是:
- 瞭解 STL 的常用組件,能正確使用 STL
- 知道 type_traits ,以及如何使用 type_traits
- 對虛函數、重載、虛表有一定了解
- 能正確認識C++的異常
- 瞭解 Pure C 和 C++ 的 C 子集中比較常見的、明顯的區別
Java 上,我問的問題比較少,遠不如 C++ 多,並且更簡單,也就是:
- int/long 的二進制位數,jvm 是否在不同平臺 int/long 的二進制位數是否相同
- 對於 StringBuilder,每次追加一個字符,當其長度長到 n 時,時間複雜度是多少
- 能否把一個 String 對象,添加到一個 List<Integer> 中
- Comparable 和 Comparator 有何區別,如何把非 Comparable 的對象作爲 TreeMap 的 Key
- GC 的基本原理(大部分人的回答是調節 gc 參數)
算法+Coding:
- 90%以上的人不知道 make_heap 的時間複雜度,知道的人,也都是背的答案。
- 完全無 bug 的 binary_search ,只有 3% 。
- std::lower_bound 類似功能的函數,目前還沒一個人寫得出來。
- 從一組 IP range --> value 的數據中查找單個 IP,允許使用 C++ stl 或 java 基礎類,還沒一個能給出解決辦法。
- QuickSort 的最好情況,和 MergeSort 的最好情況,哪個的 KeyCompare 次數更少,目前只有一個人答出。
熟悉 perl, bash, python 等腳本語言