面试完心都凉了,对技术这条路毫无信心了,大家来鄙视下吧。
首先,介绍下经验,2年数据库方面的开发,非VC,再接下来2年VC写些游戏杆、SKYPE电话的开发或USB通讯开发小程序,接下来3年做下位机监控开发,主要用VC,串口通讯,GDI及多线程。
去面试某知名互联网企业,写一int binary_find(int * p, int m, int n)原型的二分查找(p数组,m长度,n查找值,要求用递归,并返回实际查找到的下标,如果不存在于数组,返回情况:1,小于首元素则返回首元素下标,2,大于末元素则返回末元素下标,3,位于数组中,返回比他大的第一个元素的下标),这个当时我写成了这样:
int binary_find(int * p, int m, int n)
{
static int * pTemp = p; // 记录首指针
int k = p - pTemp; //记下偏移量
if (p[0] >= n) //首数大于或等于要查找的数n
return k;
if (p[m - 1] <= n) //末数小于或等于要查找的数n
return m - 1 + k;
int i = 0;
int j = m - 1;
int mid = (i + j) / 2;
if (n < p[mid])
return find(p, mid - 1, n);
if (n > p[mid])
{
if (p[mid + 1] > n)
return mid + k + 1;
return find(p + mid, m - mid, n);
}
if (p[mid] == n)
return mid + k;
return -1;
}
这个肯定也会有问题了
接下来,GDI对像有哪些,封装了什么内核对像,只答了画笔,画刷,实在不知道封装了什么内核对像,答封装了DC
PretranslateMessage的作用,答在窗口过程处理前可以在这个函数中截获消息处理,再问他能截获哪种类型的消息,当时一起似乎消息队列的都可以,不存在说哪种类型,竟然硬着头皮瞎说出命令消息,被BS
进程间通讯机制有哪些,答消息,socket,共享内存,再问什么时候用消息不用socket或用socket不用消息,还真不好答,只说若要触发另一进程的某个过程可以用消息,socket在执行上这种情况下效率会低。
再问com组件必须要实现的东西,答IUNKNOWN,再问包括哪几个接口,答QueryInterface,Addref, Release,再问如何管理生命周期的,答,记数器。
问到GDI绘制闪烁,答可以先内存绘图再bitblt贴出
最后面试官结论,工作年限与水平不匹配,估计要再练三年,拒绝。
还练三年,那就33岁了,确实在技术这条路上看来是走不通了,得转行了。