首页 > 技术文章 > 面试的一些基本概念及注意点

Linkabox 2013-10-21 11:37 原文

粗看《剑指offer》第一章的总结

在填写专业技能时都时常要填写诸如:精通xx、熟悉xx、了解xx,很多人不了解它们的区别,下面就详细说说它们的区别。

精通——能轻松解答某方面的大多数问题

熟悉——使用某技术开发过相关项目

了解——就是入门,只看过书但没实际开发,对于无关的职位无须填写

1.扎实的基础知识

基础知识一般考察以下这三方面内容

①某一编程语言的细节:如C++里const的使用、sizeof等

②数据结构:链表、树、栈、队列、哈希表

③算法:查找、排序 ☆重点的是二分查找 归并排序  快排

          对算法要求很高的公司还会涉及到 动态规划(DP) 贪婪算法

2.高质量的代码

边界条件、特殊输入、错误处理,这些都是编写代码时要特别注意的,为了防止遗漏最好是先列举测试用例,再编写代码。

比如atoi的编写,看似简单,不过要写好还需考虑周全

①正负数的区别

②非数字

③最大正整数及最小负整数溢出问题

3.思路要清晰

如何保持思路清晰是非常重要的,如果连问题都了解不清,更不用说解题了。

①列举一两个例子归纳其规律,归纳法(具体化)

②用图形来简化问题表示(形象化)

③将复杂问题分解(分治与DP)(简单化)

④通过一般原理推出关于特殊情况下的结论,演绎法

4.优化效率的能力

①如何分析效率——大O表示法

②选择合适的数据结构——如“求最小的k个数”可以使用最大堆

③善用已有算法来解决问题,如二分查找,快排等

5.优秀的综合能力

①沟通能力和学习能力,从你回答时是否观点明确、逻辑清晰可以看出来。

②创新能力,问你最近看什么书,或者给你一个新概念,让你用这个概念来解决一个问题

③知识迁移能力,先问你一个简单的问题,在问一个相对复杂的问题。

    如:fibonacci数列与青蛙上n级台阶的跳法

④抽象建模能力和发散思维能力

6.应聘者的提问环节

最好问一些进入公司后所做项目的细节问题,或者是否有xx相关的培训。

切勿问薪酬问题、发展战略之类的高层问题。

推荐阅读