前几天在微博上看到July要举行面试和算法讲座,就顺便一顶,后来仔细想了想,自己最近学习科研太没有动力了,需要激励一下,就报名参加了,给July捐了10元,钱不多,但是个意思,人家好心组织,又定场地又送书,也不好意思白去。中午到北理工的7号楼,已经有好几个人在报告厅外面等着了,1点左右开门进去,July还没到,进去找个前排位置坐下,工作人员在布置会场。本来以为会设个门禁,结果是想进就进,只是坐好后签了个到。
2点正式开始,座无虚席,还有站着听的,July(
微博,
博客)和曹鹏博士(
微博,
博客)两个人讲,July刚开始有点小紧张,不过马上进入状态。寒暄之后进入正题,因为主要是针对毕业生的面试问题,所以上来就问了我们几个基础性的问题:
1、TCP建立连接的三次握手?
2、死锁的条件是什么?
3、线程与进程的区别是什么?
4、指针与引用的区别?
5、C++内存分配
堆、栈、自由存储区、全局/静态存储区,常量存储区
6、字节sizeof/指针/排序/虚拟函数等等
找了几个人回答,回答的都有赠书。之后讲面试前的准备工作,我总结了一下,基本上是看July的博客和《编程之美》《剑指offer》《程序员编程艺术》这几本书。然后July给十分钟时间让手写算法——二分查找,写完交上去评优送书。July给出的答案中有几点很有意思:
1)计算mid = (left + right) / 2 的时候把除以2用右移一位代替,这样更高效也可防止溢出(不是很懂);
2)if判断的时候先判断是否大于和小于,最后判断等于,因为数组中元素和目标值不相等的情况居多;
可以看出来July很是心细,能注意到很多细节。之后讲了几个算法题,气氛还是比较轻松的,完全没有上课那种严肃的感觉,很不错,讲的内容在July最近的博客中也都有,像
完美洗牌算法、
智能搜索提示、
字符串转换整数等。
然后是曹鹏博士讲,曹鹏博士的几个观点感觉还是很有帮助的:
1) 面试时最好先快速给出一个不很完美的解决方案,然后在与面试官交流的过程中提出改进。
2) 算法的基础是排序和查找。
3) 不要过分追求时间复杂度,实际中一个1000000000 * n的算法可能比n^2的还差。
然后讲了三个字符串处理的题目:循环右移字符串,最长回文子串,前中后出现三次的最长子串。曹鹏博士讲的比较官方,语速很快,能看出来博士期间经常给人讲解,但这样很容易把人讲睡,我听着听着就睡着了,讲完也醒了。囧!!!
总之感觉这次活动很有意思,有收获,期待下次。
July的演讲PPT下载:
http://download.youkuaiyun.com/detail/masikkk/6288291
曹鹏博士的演讲PPT下载:
http://vdisk.weibo.com/s/BODzWsDIp8H2d