十月份到现在参加了4个公司的笔试和面试,后天打算把三方协议签了,找工作就暂时尘埃落定了。开始专心复习之前,把笔试和面试中遇到的一些问题拿出来总结下。所列题目大致按照出题思想,非原题目。
我面试的这4家IT公司,对于三点都非常重视。一个是基础知识,一个是运用知识,思考的能力,一个组织表达能力。按这三种分类记录下笔试和面试题目。
[基础知识]
考察基础知识,在笔试题目最常见,占比例也最大。
- 有n个节点的二叉树,其中有m个节点有两个孩子,问这棵树有多少颗叶子节点。
这题目其实是数据结构上的原题,不要被n迷惑了。
原题目见:Problem 1414 – URL 。
题目的背景是,我们在浏览器中输入URL时,浏览器会提示我们之前搜索过的,URL以当前字符为前缀的的网页,并且按照之前访问次数来递减显示。
思路,每次Visit时将访问的页面作为KEY来保存,并且次数增1。每次Display时,搜索所有现存的网页,找到以当前字符串为前缀的字符串,并按次数逆序输出。
虽然解题报告不提倡直接贴代码,不过我的代码没多少行,题目又比较简单,就给我AC的代码吧。这题的数据比较弱,我看前200多名都是0MS。代码是逼着自己用STL中的容器map写的,如果发现有什么改进的地方请告诉我。
【题目1】三句话实现:整数的输入,排序,输出:(by Sandy)
【题目2】三句话实现:单词的输入,剔除其中重复的单词,并按字母顺序输出。
【woj1170】Problem 1170 – Sorting 重写了遍。
首先说一点,感觉金山对这次实习生很不重视,连个工作人员都没派来,监考是学院的人,很囧。也没看到保密协定,所以就公开这篇日记了。
第一题是求两个整数区间的交集,即[a,b]和[c,d]的交集。这题目很简单,只要讨论端点的大小就好了。
第二题,给一个只包含字母和空格的字符串,不区分大小写,然后问那个字母没有出现过?这题目更简单,建立一个26个字母的标记表,初始化时全设置为FALSE,然后扫描字符串,出现过的字母设置为TRUE。扫描结束后再扫描一次标记表,还是FALSE的表明没有出现过。
第三题,斐波那契数列问题:
F(0)=0;F(1)=F(2)=1;F(n)=F(n-1)+F(n-2);(n>=3)。现在…