剑指offer笔记_第一章

来源:互联网 发布:淘宝宝贝上架怎么操作 编辑:程序博客网 时间:2024/06/13 08:29
第一章
1.1面试
三种形式:
应聘者通过公司的简历筛选环节后,开始面试:电话面试->共享桌面远程面试(少数)->现场面试
电话面试:
建议应聘者在投出简历之后的一两个星期之内,要保证手机电池能至少连续通话一个小时。另外应聘者不要长时间待在很嘈杂的地方。应聘者在电话面试的时候应尽可能用形象化的语言把细节说清楚。外企一般会在该环节加上英语面试,听力要求要好。
共享桌面远程面试:
利用一些共享桌面的软件,应聘者把自己电脑的桌面共享给远程的面试官。这种面试,面试官最关心的是应聘者的编译习惯及调试能力。要求应聘者要:
a.思考清楚再开始编码(想清解题思路,算法的时间、空间复杂度,特殊情况处理方案)
b.良好的代码命名和缩进对齐习惯
c.能够单元测试(最好先写单元测试用例,再写解决问题的函数)
现场面试:
收到E-mail,邀请参加现场面试。应聘者应该:
a.规划好路线并估算出行时间
b.准备好得体的衣服
c.注意面试邀请函里的面试流程(若时间太长,可带一些提神的饮料或食物)
d.准备几个问题(每一轮面试最后,面试官都会让应聘者问几个问题)

1.2面试的三个环节(总时间1小时)
行为面试->技术面试->应聘者提问
       (重头戏)
行为面试环节:
a.时间:面试开始的5~10分钟
b.内容:一般不会问技术难题,面试官会注意应聘者的性格特点,深入地了解简历中列举的项目经历。
c.STAR模型描述项目经验:Situation->Task->Action->Result
    Situation:简短的项目背景,比如项目的规模、开发的软件的功能、目标用户等。
    Task:自己完成的任务(详细),分清参与与负责
    Action:为了完成任务自己做了哪些工作,是怎么做的(详细),系统设计的可介绍系统框架的特点;软件开发的可介绍基于什么工具在哪个平台下应用了哪些技术;做软件测试的,可以写手工测试还是自动化测试,是白盒测试还是黑盒测试等。
    Result:自己的贡献(具体,最好加数字加以说明),参与功能开发,按时完成多少功能;做优化,性能提高的百分比是多少;维护,修改了多少个bug。
eg:Winforms是微软.NET中的一个成熟的UI平台(Situation)。本人的工作是在添加少量新功能之外主要负责维护已有的功能(Task)。新的功能主要是让Winforms的控件的风格和Vista、Windows 7的风格保持一致。在维护方面,对于较难的问题我用WinDbg等工具进行调试(Action)。在过去两年中我总共修改了超过200个bug(Result)。
d.面试官针对项目经验最常问的问题:
    #你在该项目中碰到的最大问题是什么,你是怎么解决的?
    #从这个项目中你学会了什么?
    #什么时候会和其他团队成员(包括开发人员、测试人员、设计人员、项目经理等)有什么样的冲突,你们是怎么解决冲突的?
e.应聘者掌握的技能:注意了解、熟悉和精通的区别。
    了解:对某一技术只是上过课或者看过书,但没有做过实际的项目。通常不建议在简历中列出只是肤浅地了解一点的技能,除非这项技能应聘的职位的确需要。
    熟悉:简历中我们描述技能的掌握程度大部分应该是熟悉。如果我们在实际项目中使用某一项技术已经有较长的时间,通过查阅相关的文档可以独立解决大部分问题(毕业设计,在项目开发过程中)。
    精通:如果对于一项技术使用的得心应手,在项目开发过程中当同学或同事请教我们这个问题我们都有信心也有能力解决,即为精通。
f.回答“为什么跳槽”(性格测试):尽量避免以下4个原因:
    #老板太苛刻。
    #同事太难相处。
    #加班太频繁。
    #工资太低(等完成技术面试之后谈offer的时候,再和HR谈工资)。

技术面试环节
a.时间:40~50分钟
b.内容:对编程语言、数据结构和算法等基础知识要求有全面的了解,代码要注重细节,理清思路,不断优化时间、空间效率。
c.应聘者需要具备的素质:
    #基础知识扎实全面,包括编程语言、数据结构、算法等;
首先,每个程序员至少要掌握一两门编程语言。其次,数据结构通常是编程面试过程中考查的重点。最后,大部分公司都会注重考查查找、排序等算法。
    #能写出正确的,完整的、鲁棒的高质量代码;
面试官总会格外关注边界条件、特殊输入(NULL指针,空字符串等)及错误处理等地方,以考查应聘者是否注重代码质量。
    #能思路清晰地分析、解决复杂问题;
遇到复杂的问题时,首先是举几个简单的具体例子让自己理解问题,找到抽象的规律。其次可以试着用图形表示抽象的数据结构。最后试着把复杂的问题分解成若干个简单的子问题,再一一解决。
    #能从时间、空间复杂度两方面优化算法效率
首先要知道如何分析效率,还要熟知各种数据结构的优缺点,并能选择合适的数据结构解决问题,也要熟练掌握常用的算法(较常用的是查找和排序)
    #具备优秀的沟通能力、学习能力、发散思维能力等;

应聘者提问环节
a.结束面试前的5~10分钟
b.面试官会给应聘者机会问几个问题,应聘者的问题的质量对面试的结果也有一定的影响。
c.建议应聘者不妨在面试前为每一轮面试准备2~3个问题。推荐问与招聘的职位或项目相关的问题(一是面试前网上收集;二是面试中留心面试官说过的话)。
0 0
原创粉丝点击