摘要:《程序员的呐喊》一文,讲了三个部分的内容,笔者重点阅读的是面试的章节,以及总结,摘录重点之处。
1 该书的后记翻译部分,言简意赅,但是又突出了个性,说出了程序员该有的态度
- 软件开发的方式多种多样,不存在谁好谁坏,但是他们互相都看不起 ——笔者注:哈哈哈,这个是程序员的通病,个个都很傲娇。
- 好的程序员之所以出色是因为熟能生巧 ——笔者注:程序员需要多写代码,写得越多越出色。
- 只要你愿意,随时都可以学习新语言 ——笔者注:事情不是因为难而不做。而是不做就觉得很难。
- 如果你想当经理,那你很可能不会是个好经理 ——笔者注:当经验达到一定程度,也就顺理成章了。
- Lisp很难掌握,但它是唯一能让我快乐的语言
- Emacs很难掌握,但却是受益终身的投资
- 离开舒适区,是不是学点新东西为自己写点东西,只有这样你才知道那是不是对的 ——笔者注:人需要一直保持警觉,贪念安逸是退休后的生活,我们还年轻,持续纠偏,或许这也是我写博客的原因了,说出自己知道的,挖掘自己不知道的,时刻保持一个空杯心态。
- 多笑一点,这很健康,也让人感觉良好 ——笔者注:开心了,笑一笑,不开心,过一会儿,再笑,爱笑的人运气都不差。
- 记得自嘲,不过不要再公开场合大声自嘲,也不要忘了解释 ——笔者注:拥有乐观的心态,肯定自己独特的一面,也要反省自己技不如人的一面。
2 作者写到了如何面试,准备很重要,所谓不打无准备之战,要么不战,要战必胜
2.1 非技术部分
2.1.1 热身
长期热身:面试前复习1~2星期,好好读一本讲数据结构和算法的书,或者《算法导论》,至少能够识别问题属于哪一个类型,或者找一个朋友当面试官,充分热身才有最出色的表现。
短期热身:面试前一晚一定要休息好。
2.1.2 心理准备
保持谦逊、开明、专注的态度,要是卡住了,不要害怕问问题,有些面试官通常也乐意帮你清除一些障碍,尽力去完整的解答它。有时候可以和面试官确认自己是不是在正确的方向上。
2.2 技术面试
算法复杂度
哈希表
树
图
高级算法
2.3 其他数据结构
著名的NP问题,如旅行商问题和背包问题
操作系统:进程、线程、并发、锁的概念、互斥锁、信号量、死锁、活锁、怎么避免他们、进程需要哪些资源、线程需要哪些资源、上下文切换怎么进行、操作系统和底层硬件是怎么触发上下文切换的等,推荐《Java并发编程》,道格.李
附录:《程序员的呐喊》,美 Steve Yegge著,徐旭铭译,人民邮电出版社