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

面试1,2,3

2014年02月11日 ⁄ 综合 ⁄ 共 1645字 ⁄ 字号 评论关闭

1,C++基础知识的面试题:

1、static, const 的用法:在类中使用static成员函数,为什么static函数不可调用non-static成员变量和成员函数?(没有this 指针),const成员函数如何使用?为什么const成员函数不可修改成员变量?(const this指针)

2、虚函数:纯虚函数的用法,多态如何实现,虚函数表如何实现?虚析构函数的作用

3、auto_ptr,shared_ptr的用法? (一家很牛的互联网公司电话面试的时候问的,仅此一次)

4、类型转换,static_cast, dynamic_cast, reinterpreter_cast, const_cast的用法

5、overide, overload,为什么构造函数不能为虚函数?

6、stdcall, cdecl的区别?

还有那家纯美资企业的C++面试题,问题比较偏门,包括类成员指针、参数为对象时临时对象,模板偏特化等,建议看看《effective c++》,另外还有本英文的《C++ common knowledge》,也是本很有用的书。牛逼点的还可以看看《深入探索C++对象模型》这本书,不过本人感觉这书里讨论的情形太过奇葩,又是多态又是多重继承又是模板的堆在一起,基本上在工程实践上用到的情况很少。除非你想发明一种新语言。

2,数据结构与算法

这部分是整个面试过程中最有难度的部分,往往也是决定能否给offer的决定环节。准备数据结构与算法的最佳参考书当然是《算法导论》这本公认的经典,这本书的特点是非常非常的系统,但是有些数学证明,对于面试而言是无帮助的。面试中最多问一句:空间复杂度是多少?时间复杂度是多少?

另外有一本很有用的书《算法技术手册》,里面有很多经典算法的原理图和伪代码,比起《算法导论》,这本书要实用和高效很多。

面试中经常考察的数据结构包括链表、数组(字符串)、二叉树,太复杂的数据结构一般较少问到,唯一例外的是被问到了最大堆和最小堆。

具体的,

链表:翻转一个单向链表(递归与非递归),合并两个排序的单向链表为一个排序链表(merge sort),找出两个链表相交的第一个节点

字符串:1,在A串中找到B串,并返回位置。 2,找出字符串数组中出现一次的一个单词,出现一次的两个单词?3,写一个atoi程序(见本人博文)4,写一个strcpy,注意内存申请失败的时候异常处理。

二叉树:找出二叉树的第二大(小)节点

其他:用两个stack实现一个queue

算法中比较重要的是几个常用的排序算法,及其变形应用,包括insert sort, merge sort, quick sort(变形包括求最大的N个数), count sort。写一个没有错误的二分搜索(递归非递归)

白板或者纸上现场作答的题目主要是为了考察你的编程基本功,一般不会有太复杂的算法,但是并不表示你能很容易的通过,越是简单问题,面试官对程序的书写风格、边界检查都会考察的非常仔细(如aoti程序)。当然也有例外,有一次让我在白板上写优先队列的pop操作,由于涉及到优先队列的堆重建,和优先队列用数组的表示方法,一下子就蒙了,面试官又一副冷漠的神情,让我有些愤怒,很想跟他说我真的记不得了要不你来写一下看看?那是我最不愉快的一次面试。

3,操作系统

Windows操作系统通常会问

1,线程和进程的区别,线程的同步方式?进程间的通信方式。 2,Windows消息传递机制? 3,异步socket,连接池

Linux

1,常用命令,top,ps

2, \proc\*目录

3,压缩打包命令

4,C语言调试方式,内存泄露检查工作

5,httpd里的mod的编写?如何优化http消息?

4,杂项

1,性能优化问题,C10K

 另外面试官一般会根据你的项目经历,问一些项目相关的问题,比如会问你:你做过的项目里你最得意的作品是什么?最不满意的地方又是什么?又比如我简历里谈到比较熟悉设计模式,面试官会问你用过哪些设计模式?列出常见的设计模式?所以其实精心准备一份让你有话可说的简历,其实也是非常重要的。

抱歉!评论已关闭.