面试的一些基本概念及注意点
粗看《剑指offer》第一章的总结
在填写专业技能时都时常要填写诸如:精通xx、熟悉xx、了解xx,很多人不了解它们的区别,下面就详细说说它们的区别。
精通——能轻松解答某方面的大多数问题
熟悉——使用某技术开发过相关项目
了解——就是入门,只看过书但没实际开发,对于无关的职位无须填写
1.扎实的基础知识
基础知识一般考察以下这三方面内容
①某一编程语言的细节:如C++里const的使用、sizeof等
②数据结构:链表、树、栈、队列、哈希表
③算法:查找、排序 ☆重点的是二分查找 归并排序 快排
对算法要求很高的公司还会涉及到 动态规划(DP) 贪婪算法
2.高质量的代码
边界条件、特殊输入、错误处理,这些都是编写代码时要特别注意的,为了防止遗漏最好是先列举测试用例,再编写代码。
比如atoi的编写,看似简单,不过要写好还需考虑周全
①正负数的区别
②非数字
③最大正整数及最小负整数溢出问题
3.思路要清晰
如何保持思路清晰是非常重要的,如果连问题都了解不清,更不用说解题了。
①列举一两个例子归纳其规律,归纳法(具体化)
②用图形来简化问题表示(形象化)
③将复杂问题分解(分治与DP)(简单化)
④通过一般原理推出关于特殊情况下的结论,演绎法
4.优化效率的能力
①如何分析效率——大O表示法
②选择合适的数据结构——如“求最小的k个数”可以使用最大堆
③善用已有算法来解决问题,如二分查找,快排等
5.优秀的综合能力
①沟通能力和学习能力,从你回答时是否观点明确、逻辑清晰可以看出来。
②创新能力,问你最近看什么书,或者给你一个新概念,让你用这个概念来解决一个问题
③知识迁移能力,先问你一个简单的问题,在问一个相对复杂的问题。
如:fibonacci数列与青蛙上n级台阶的跳法
④抽象建模能力和发散思维能力
6.应聘者的提问环节
最好问一些进入公司后所做项目的细节问题,或者是否有xx相关的培训。
切勿问薪酬问题、发展战略之类的高层问题。