靠谱的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 等脚本语言