C++开发职位面试题收集与面试心得
2012-04-03 00:00
501 查看
最近两个月去了很多IT公司面试,包括google,微软,甲骨文,百度,搜狐,QQ,360,小米科技,人民搜索,百分点,云壤,美丽说,京东,轩辕互动(现happy latte)。面试过程中,有很多感想,这里把一些经典的面试题与大家分享下。面试岗位:C++开发工程师。
语言部分:
虚函数,多态。这个概念几乎是必问。
STL的使用和背后数据结构,vector string map set 和hash_map,hash_set
实现一个栈类,类似STL中的栈。这个题目初看非常简单,当时我还有点不屑,怎么出这么简单的题。但写过c++和没有写过c++的人写出的代码是一眼就能看出差别的。譬如三大函数有没有写,引用的使用,都非常的关键。如果这方面没有经验,建议阅读下http://book.douban.com/subject/1971825/ 这本书中简单数据结构的实现,细节很关键
c部分:函数指针的声明
c++中的多线程
算法部分:
判断一个单链表是否存在循环(快慢指针的方法)
如何判断一副麻将牌胡了(回朔法)
二叉搜索树,节点上已经标有数字,如何找两个节点的最小公共节点(查找第一个在两个节点值中间的节点,如两个节点分别是3,8,查找在3,8之间的值的节点,如没找到,则3,8其中一个是另一个父节点)
二叉树,如何找两个节点的最小公共节点(比较笨的方法是,找到从root到两个节点的路径,然后两条路径的从root开始的最后一个相同节点就是所求节点。精妙点的参考lca算法)
最短摘要生成,有一个数组,还有一个集合,在数组中寻找包含集合中全部元素的最短子串。详细可以参见编程之美3.5
寻找最大的K个数,编程之美2.5
如何判断两个网页的相关性(如果说面试搜索相关的只是,看下吴军的数学之美大有裨益,其中的向量空间模型非常优美,TF和IDF这些术语也必须知道)
Hash的平均查找长度和装填因子的关系(好好回味下数据结构书吧)
一致性hash原理
rehash的时候可能导致插入的元素响应时间特别长,有无更好的方法?可以参考redis的rehash实现,当到了rehash的时候,不是一次性把所有的数据迁移到另一个更大的hash表中,而是每次迁移一个bucket,这样可以平摊时间
如何对全是01的文件进行压缩,一直没有好的答案。
系统设计部分:
当系统的处理请求时间一定的时候,如何可以加快响应速度。(cache的使用),当时很傻,竟然没想到这个,我给的答案是增加系统规模,这样只能减少请求等待时间。有时候面试人就会短路,google的题,想了半天才想出来
两块虚拟网卡进行通讯,但是需要数据加密,如何实现数据加密。感觉跟ssl很像
编程部分:
二分查找(频率超高)
建堆,顺便说下建堆的时间复杂度是O(n),不是log,证明可以看算法导论
写一个函数,将字符串反转,反转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数 (频率超高的一题,先反转整个字符串,然后反转每个词)
项目部分:
因人而异
语言部分:
虚函数,多态。这个概念几乎是必问。
STL的使用和背后数据结构,vector string map set 和hash_map,hash_set
实现一个栈类,类似STL中的栈。这个题目初看非常简单,当时我还有点不屑,怎么出这么简单的题。但写过c++和没有写过c++的人写出的代码是一眼就能看出差别的。譬如三大函数有没有写,引用的使用,都非常的关键。如果这方面没有经验,建议阅读下http://book.douban.com/subject/1971825/ 这本书中简单数据结构的实现,细节很关键
c部分:函数指针的声明
c++中的多线程
算法部分:
判断一个单链表是否存在循环(快慢指针的方法)
如何判断一副麻将牌胡了(回朔法)
二叉搜索树,节点上已经标有数字,如何找两个节点的最小公共节点(查找第一个在两个节点值中间的节点,如两个节点分别是3,8,查找在3,8之间的值的节点,如没找到,则3,8其中一个是另一个父节点)
二叉树,如何找两个节点的最小公共节点(比较笨的方法是,找到从root到两个节点的路径,然后两条路径的从root开始的最后一个相同节点就是所求节点。精妙点的参考lca算法)
最短摘要生成,有一个数组,还有一个集合,在数组中寻找包含集合中全部元素的最短子串。详细可以参见编程之美3.5
寻找最大的K个数,编程之美2.5
如何判断两个网页的相关性(如果说面试搜索相关的只是,看下吴军的数学之美大有裨益,其中的向量空间模型非常优美,TF和IDF这些术语也必须知道)
Hash的平均查找长度和装填因子的关系(好好回味下数据结构书吧)
一致性hash原理
rehash的时候可能导致插入的元素响应时间特别长,有无更好的方法?可以参考redis的rehash实现,当到了rehash的时候,不是一次性把所有的数据迁移到另一个更大的hash表中,而是每次迁移一个bucket,这样可以平摊时间
如何对全是01的文件进行压缩,一直没有好的答案。
系统设计部分:
当系统的处理请求时间一定的时候,如何可以加快响应速度。(cache的使用),当时很傻,竟然没想到这个,我给的答案是增加系统规模,这样只能减少请求等待时间。有时候面试人就会短路,google的题,想了半天才想出来
两块虚拟网卡进行通讯,但是需要数据加密,如何实现数据加密。感觉跟ssl很像
编程部分:
二分查找(频率超高)
建堆,顺便说下建堆的时间复杂度是O(n),不是log,证明可以看算法导论
写一个函数,将字符串反转,反转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数 (频率超高的一题,先反转整个字符串,然后反转每个词)
项目部分:
因人而异
相关文章推荐
- 面试Java软件开发职位面试题
- java开发工程师职位面试中遇到的一些面试题
- linux C/C++服务器后台开发面试题总结
- 针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理(4)
- linux C/C++服务器后台开发面试题总结
- C/C++笔试、面试题目大汇总 Visual C++常见面试题 王牌7
- 面试题——C/C++经典问题,及面试笔试题
- 10-20-pm-C++开发面试题
- 智能设备的C#和C++的混合项目开发心得(非托管的DLL函数调用)
- 开发职位经典面试题
- Google Android 开发工程师职位面试题
- Java开发职位要求收集
- cvte2018秋季招聘c++开发面试面经
- 【面试】iOS 开发面试题(四)
- 【转发】亲历腾讯WEB前端开发三轮面试经历及面试题
- 针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理
- java开发技术面试心得
- 面试题:你有能力胜任应聘的职位吗?_面试笔试
- Java开发岗位面试题归类---怎么好好的准备面试,也算是发展学习方向
- linux c++ 服务器端开发面试必看书籍