现在的位置: 首页 > 综合 > 正文

【C/C++】如何进行技术面试

2018年04月23日 ⁄ 综合 ⁄ 共 982字 ⁄ 字号 评论关闭

一、基础知识

需要熟练掌握C/C++编程语言,然后熟知基本的数据结构和算法知识。

1) 对于C,需要掌握一些编译原理和操作系统方面的知识,对于代码是如何编译和链接的,存放在内存的哪个段空间,系统调用的内核切换等要比较清楚。

2) 对于C++,需要掌握虚表,对象模型以及面向对象设计方面的一些知识。

3) 对于数据结构,要掌握基本的数据结构,包括其定义,相关操作以及基本的应用。主要有:

堆栈,链表,队列,二叉树(遍历,最优二叉树,Huffman编码,森林和二叉树的转化),图(广度和深度遍历,最小生成树,关键路径,最短路径)。

4) 对于算法,要掌握基本数据结构的算法,还有查找和排序的基本算法。主要有:

折半查找,二叉查找树,B树,哈希表;插入排序,选择排序,快速排序,堆排序,归并排序,基数排序。

同时要掌握一些算法的基本原理,如贪心算法,动态规划,递归法,分治法等可以参考http://coolshell.cn/articles/2583.html

二、准备

练习各种基本数据结构,最好能自己动手实现各个结构以及算法。

三、面试

1) 对于基础题目,掌握相应的知识点即可,如const的使用,预编译的作用,虚析构函数的作用等。

2) 对于基本算法题,自己准备充分即可,如写折半查找算法,实现双向链表,算各种的排序的时间复杂度等。

3) 对于具体应用问题,这类问题通常比较难,如设计一个连连看游戏,瓷砖覆盖地板问题,俄罗斯方块问题,取M个数中最大的N个数等。

a、遇到这类问题,先仔细分析题意,然后运用适当的数据结构,当不知道用什么数据结构时,可以一个一个试,如链表不合适的话,可以用队列试试,如果不行,还可以

用二叉树试试,一般的问题都离不开这些数据结构。对于使用什么算法,也可以一个一个试,如递归法是否可以解决问题,不行的话,动态规划是否可以。

b、每个数据结构和算法都会有一定的适用范围,同时有一些问题也会给一些直观的感觉,如设计一个连连看游戏,都是一个一个格子,就可以考虑图论,然后判断连个图标

是否可以相消时,可以想到用广度优先算法,有了这个基本思路,其他的就水到渠成了。

如迷宫问题,就可以考虑使用堆栈来一步一步探索,或者使用广度优先算法直接找最短路径,如能找到就表示迷宫有出路。

c、在面试过程中,不要紧张不要急,慢慢理清思路,思路清晰了就能比较好的解决问题。

四、总结

准备充分,不急不躁,相信自己。

抱歉!评论已关闭.