最近几个月,面试了不少的程序员,更好听的名字叫做软件工程师,甚至高级软件工程师。
我一般会针对面试者的特长,问一些相关的问题。有说擅长算法的,图像处理的,图形学的,数学的,C++的,Java,Perl 的,Shell 的,Linux内核的……
到目前为止,面试的人不算太多,但少说也过100了,基本上,语言方面和其它特长兼有的,一个也还没碰到过。
靠谱的C++程序员,所谓的靠谱,其实也就是:
- 了解 STL 的常用组件,能正确使用 STL
- 知道 type_traits ,以及如何使用 type_traits
- 对虚函数、重载、虚表有一定了解
- 能正确认识C++的异常
- 了解 Pure C 和 C++ 的 C 子集中比较常见的、明显的区别
基本上,就这 5 点,能有两点比较突出的,也就那么两三个人,而这两三个人里面,C++差不多就是他们唯一的特长了。
Java 上,我问的问题比较少,远不如 C++ 多,并且更简单,也就是:
- int/long 的二进制位数,jvm 是否在不同平台 int/long 的二进制位数是否相同
- 对于 StringBuilder,每次追加一个字符,当其长度长到 n 时,时间复杂度是多少
- 能否把一个 String 对象,添加到一个 List<Integer> 中
- Comparable 和 Comparator 有何区别,如何把非 Comparable 的对象作为 TreeMap 的 Key
- GC 的基本原理(大部分人的回答是调节 gc 参数)
目前还没碰到一个人能回答第 4 个问题!呜呼!
算法+Coding:
- 90%以上的人不知道 make_heap 的时间复杂度,知道的人,也都是背的答案。
- 完全无 bug 的 binary_search ,只有 3% 。
- std::lower_bound 类似功能的函数,目前还没一个人写得出来。
- 从一组 IP range –> value 的数据中查找单个 IP,允许使用 C++ stl 或 java 基础类,还没一个能给出解决办法。
- QuickSort 的最好情况,和 MergeSort 的最好情况,哪个的 KeyCompare 次数更少,目前只有一个人答出。
如果在这些之外,还熟悉 perl, bash, python 等脚本语言的,更是凤毛麟角。
要知道,这些职位可都是年薪20w以上的!
欢迎同道之士加盟,可以站内联系我,有内部推荐机会。
Windows 7 资源管理器反应超慢已经很久了,刚刚这个问题被我彻底解决。使用 Autoruns 查看 Explorer 页,删掉所有可疑的王八蛋: 继续阅读 →
作者:
rockeet
发表日期:
2011年01月12日
分类:
C++
评论:
0 条
阅读次数: 2,148 次
这是源自某论坛的一个问题,原帖如下(#########分隔) 继续阅读 →
作者:
rockeet
发表日期:
2010年08月05日
分类:
C++
评论:
2 条
阅读次数: 3,022 次
给定这样一个问题:
有一组从IP范围到地理位置信息的数据,不同地点的IP范围没有重叠,实现从单个IP地址查到相应的地理位置。 继续阅读 →
作者:
rockeet
发表日期:
2010年07月12日
分类:
算法
评论:
0 条
阅读次数: 2,219 次
SQL 有5个标准聚集函数:SUM, AVG, MIN, MAX, COUNT, 一般情况下,这几个函数的时间复杂度至少都是O(n), n是结果集的尺寸。然而,给定表:
继续阅读 →
作者:
rockeet
发表日期:
2010年07月04日
分类:
杂谈
评论:
0 条
阅读次数: 1,925 次
新买的廉价路由器,可以脱机下载,但只内置了bt,没有内置amule。先自己装了amule,router上的falsh太小,装不下那么多软件,就装到移动硬盘上,格式化成ext3。 继续阅读 →
作者:
rockeet
发表日期:
2010年03月17日
分类:
杂谈
评论:
0 条
阅读次数: 2,082 次
read/ReadFile 系统调用默认有预读
write/WriteFile 默认是异步写
mmap 使用缺页中断,实现预读/异步写比较困难
aio 对磁盘调度做特殊优化,在随机访问较多时,理论上性能最好(如果操作系统真正实现了aio) 继续阅读 →
作者:
rockeet
发表日期:
2010年03月12日
分类:
未分类
评论:
0 条
阅读次数: 3,343 次
本文来源: http://www.zhihu.com/question/22818104
见到这个随机数生成算法好几次了,乍看有点鸡肋本来用Math.random()就可以的事。想不清楚为什么他要用9301,49297,233280这三个数字? 继续阅读 →
作者:
rockeet
发表日期:
2010年03月05日
分类:
C++
评论:
2 条
阅读次数: 3,337 次
下面这段代码有啥错误?
|
#if ULONG_MAX == 0xFFFFFFFF inline unsigned long byte_swap(unsigned long x) { return __builtin_bswap32(x); } inline long byte_swap(long x) { return __builtin_bswap32(x); } #else inline unsigned long byte_swap(unsigned long x) { return __builtin_bswap64(x); } inline long byte_swap(long x) { return __builtin_bswap64(x); } #endif // ULONG_MAX |
当 ULONG_MAX 未定义时,被判断为假!多么危险的一个陷阱!
增加以下验证即可查错:
|
#ifdef ULONG_MAX # if ULONG_MAX != 0xFFFFFFFFul # if ULONG_MAX != 0xFFFFFFFFFFFFFFFFul # error "ULONG_MAX error" is ULONG_MAX # endif # endif #else # error "ULONG_MAX is not defined" #endif |
这个 bug 耗费了我两个小时!