您的位置:首页 > 职场人生

互联网企业面试

2012-11-12 22:05 477 查看
腾讯电面


自我介绍后,直接上基础知识问题,30分钟狂轰烂炸。

C++中virtual的作用是什么?为什么要把基类的析构函数定义成virtual?

宏定义和inline的区别,说说inline使用的场合。为什么加了inline的函数中不能有循环?

Windows下进程间通信的方式有哪些?

说下对堆,栈,静态存储区的理解,程序的内存分配还有其他地方吗?描述一下其他段的作用?

开发时如何选择数据库,mysql和oracle如何选择?为什么oracle的性能高于mysql?数据库如何实现高效的互斥读写?

mutex和临界区各自的适用场合,在多进程和多线程中都用适用吗?mutex的实现机制是什么?

熟悉网络编程不?如何解决高并发访问?

在Windows下如何调试程序?在一个循环中,如何在不改变代码,也不改变变量值的情况下,在第k次循环时加断点?如果程序在客户的机器上崩溃了,如何调试程序?如果记录日志的话,也会很大,不容易找出原因,有其他办法吗?

Windows下遍历文件夹下面的所有文件,包括子目录,采用宽度优先遍历还是深度优先遍历好,为什么?


微软面试有感


实习生转正面试:

1. 以问项目为主,出的两道写代码的题,非常简单(类似atoi之类的题,恕不能透露原题,但题目基本都涵盖在 编程之美 等类似算法书上,原题!!当然不排除也会有难题,动态规划),核心代码就5-6行左右。

2. 微软面试非常注重细节,务必保证写在纸上的代码能够正确运行,所有边界条件均需仔细斟酌考虑。考官有可能会跟你一起double check代码的正确性。鄙人写了一个程序,自认为太简单了,没有做任何检查,就交给考官,在考官验收过程中,连续发现3个bug,改了三次,后果可想而知。直接挂掉了。。。

3. 对于内推面试或正式校招,估计会有基础知识的考察。


Hulu电面


自我介绍,自己选择一个项目进行介绍,问得不是很细。

算法题:

1.给一个各个数字不相同的数组,求满足数组中两个数字和等于k的对数。

排序O(nlogn)+前后指针扫描O(n)。

然后又问已经排好序后,要是求两个数字差等于k怎么做,保持O(n)复杂度。囧,想了一会儿,没得到正确结果。后来才发现跟求和相差不是很大,两个指针同时从起始位置走就行了。

2.在地球上向南走一公里,向东走一公里,再向北走一公里,到达了原来的位置,问地球上存在哪些这样的位置。

北极,然后让证明,后来又让我仔细想想还有没有可能,想了半天,在面试官提示下才想出完整的答案。

(1)、北极点;

(2)、很靠近南极点上一个圈上的任意点,它满足:当你向南走了1公里到达P点后,再向东走一公里时恰好绕了纬线一圈,回到了P点,再向北走就行了;

(3)、很靠近南极点上一个圈上的任意点,它满足:当你向南走了1公里到达P点后,再向东走一公里时绕了纬线不是一圈,而是好几圈(可以是任意多圈),回到了P点,再向北走就行了。

3.一个二维数组,每个位置上有值,从左上角到右下角只能向右走和向下走,问经过路径的和的最大值。

典型的动态规划O(nm),答完了后,又问要是两个人同时走,如果有路径交叉,只累加一次怎么做。

提出几种方案被否决后,最后又是在面试官提示下才找到正确方法,时间复杂度是O(nmnm)。杯具了。


阿里巴巴面试

阿里巴巴一面


如何理解大数据

竞赛和项目经验

问了一下ACM/ICPC亚洲区域赛的情况及银奖的份量?

再问了某项目与其它类似系统的区别及其优势在哪?

又问了某项目的用途、主要实现及复杂度?

你觉得最有挑战性的问题是什么?这个问题跪了

基础知识

多进程和多线程的区别?进程间是如何通信的?

进程间共享内存的机制是怎么实现的?

网络分为那几层,TCP/IP分别在那一层?

C和C++中的内存管理?在栈中最大可分配多大的存储空间?堆和栈?第二问跪了,俺的64位Linux是8MB?

C++中的抽象类,java抽象类和接口的区别

C++中static关键字的几种用法

java中的模板

算法与数据结构

倒排索引中如何求不同关键字对应文档的交集? 跳表?跳表每一跳的有多长?根号n被鄙视了

给定一个词典,有10W个中文单词,统计出一篇文档中出现的所有单词?中文不好处理,设计的trie树被鄙视,面试官的提示应该是用HashTable,但复杂度也不低。

随机抽样,有一个1亿行左右的文件,如何从文件中随机抽取100行?蓄水池抽样?

求两个字符串的最长公共子串(连续)?后缀树?代码是写不出来的,O(m*n)的动态规划还是比较好想到的。

hash和B树相比的优缺点

平衡二叉树

快速排序的平均时间复杂度,最好最坏时间复杂度

将char* a 复制到 char * b,怎样保证一定复制成功,在有内存重叠的时候,a字符串可以被破坏掉


阿里巴巴一面题目(三个不同的来源)


项目外只有一题:如何实现哈希表

项目外只有一题:检测回文字符串

项目外一个题都没问,基本是在闲聊。黑板上有好几个c++的题,看清了四个:

strcpy和memcpy的区别,new和malloc的区别,const int *p, int const *p, int *const p的区别,sizeof(i++)i的值。

剩下的问题基本就是:除了c++还会什么语言?会不会hbase?择业考虑哪些因素(工作内容?团队?薪水?户口?)?如果所有的互联网公司都给你offer你会选哪个?


阿里二面


二面有三个面试官(其实有四个,一个hr打酱油的,很随意得靠在旁边的椅子上),两个技术人员,一个hr。

第一个面试官主要问项目

问曰:你感觉你做的最有成就感的一个项目是啥?为啥?

答曰:一个分类项目,通过这个项目我学会了整个分类问题的流程。

问曰:仅仅熟悉了流程有什么好兴奋的,说说技术上你有什么收获?

答曰:把书本知识运用到了实际。(对方一顿鄙视,心中万匹草泥马飞奔了起来)

问曰:你这个分类问题里面用了什么模型?

答曰:GBDT。

问曰:为什么选用这个模型啊?

答曰:头儿指定的(其实这个是对模型理解不深,没有说出个道道来)

问曰:feature选取使用了什么方法啊?

答曰:使用了决策树剪枝~(唯一一个没有被鄙视的问题)。

问曰:你觉得你更适合哪种工作啊?(这问题有点宽泛)

答曰:我适合给一个问题,然后自己考虑去解决(尼玛,不该这么答啊!接下来就是sb15分钟了!)

问曰:那好,给你两个词“校园”,“招聘会”你衡量一下两个词的相关度。(完蛋玩意儿,不熟悉,随便扯吧,但是还是有很长时间的冷场,一直在纸上画画)

答曰:总体来说我提供了三个思路吧:

1,计算P(A|B)的概率分布,这个思路不太对,但是我也推到了一番,估计推导的过程那人是认可的,但是推出来的东西没啥用

2,计算P(A,B)这实际上就是计算AB的一种共现的次数(对方也不置可否,估计思路太简单了)

3,计算P(A),P(B)的KL距离(这个被对方一顿鄙视,然后说没道理)。

第二个面试官问了C++,设计模式、编译相关的问题。

问曰:项目中用到了什么设计模式?特点?

答曰:工厂模式,不用关心工厂内部是如何产生对象,可以不用改变调用代码。(还不知道答案对不对,感觉肯定不是全对也不是全错,对方想了想,也没啥反应)

问曰:c++中纯虚函数是否需要有默认实现?(尼玛,不会)

答曰:不需要。分析是总要有一个类来实现这个纯虚函数,这个函数才会被调用,所以默认实现也用不上(对方想了想,难道他也不知道?进入下一题)

问曰:链表查环? (故作思考,随便画了几个节点)

答曰:两个指针追赶。 (对方也很配合演好这出戏,想了想,没反应)

HR提问

问曰:你本科成绩好,为啥?

答曰:从实践中理解了书本内容。

问曰:理解多还是实践多?

答曰:理解了以后不用死记硬背。

问曰:那这么说你比较聪明?

答曰:不算是(表谦虚),从实践中理解。

问曰:那主要是实践?(尼玛,有完没完,一直问!)

答曰:嗯,还是实践多。(赶紧结束这个问题)

问曰:你有啥缺点?(想了好久,不能直接回答,来个委婉的吧)

答曰:有些工作刚接手的时候没意识到重要性,后来意识到了,如果能一开始就意识到,可能工作会开展得更好。(心想这个答案总可以了吧,自己想去)

问曰:那是神马导致你这样呢?(万只草泥马啊!想了好久。。。)

答曰:态度!(出口就后悔!怎么能说态度有问题,得~)



百度面试有感

百度垂搜一面


首先聊了15分钟左右的项目经验

随后是C++问题:

printf是干啥的,能否打印到文件中(貌似应该用fprintf才能打印,在linux上可以通过shell将信息打印到log文件中)

C++ namespace 的作用

C++ 多态是什么 怎么实现函数的覆盖

再然后是数据结构

单链表实现快速定位中间元素

快速实现找到几个最大元素 (构建大顶堆)

最后是海量数据处理:如何在1千万条重复的短信中去除重复的


百度基础架构(两面)


一面:

自我介绍

项目:先把项目聊了一遍,巨细无遗(性能参数记错好几个,囧),大概40分钟

题目:矩阵相乘如何并行(逐步加限制,直到我没招了),大概10分钟

闲聊:另外问以后希望做什么,平时都看些什么书

二面(也可以叫三面?15分钟左右):

聊了聊研究生阶段有什么感受,有哪些收获,代码能力有没有进步,有没有带人做项目的经验

是否有时间实习

最后是有什么要问的&介绍一下组内目前情况


百度LBS搜索部-数据挖掘(三面)


一面:

自我介绍

项目介绍

针对简历的内容,主要讲了两个项目,占了大部分时间

基础题

感觉都比较基础:C/C++基础,多态的实现,inline函数和宏;

vector和list容器的实现(这个我答得不好);

线程与进程的区别,线程的优点,加锁;

Transaction的含义(我就说了原子性),如何回滚后防止读脏数据(经提示,要加锁,感觉这个题目有问题,和面试者讨论了下)。

算法题

估计没时间了,就问了一个:上楼梯只能每次只能上一个阶梯或两个阶梯,要写代码输出所有上楼梯的方法。

二面:

都是项目经历,遇到的问题是怎么解决的。

三面:

项目

代码行数,自大学到研究生做的东西罗列了一下。


搜狗面试

搜狗一面:


面的很糟糕, 笔的也很糟糕

几个没做上来的题

p()是一个概率生成器,有p的概率生成0,1-p的概率生成1,问如何实现g()生成均匀的0、1分布

平面上以x,y轴进行分割,开始的时候平面中有n个长方形区域,区域间可能存在相互覆盖。

问有没有一种方法,求出随机到来的一个点究竟落在哪几个区域中。


Google面试有感

Google Phone Interview


自我介绍

问项目

项目有多少人参与

有多少用户使用

在项目中担任的角色,完成的工作

项目中遇到的最困难的问题是什么


Google Docs上做题


在循环有序数组(原来有序的数组进行了一次旋转,比如89 99 103 111 3 5 8 12 22 28 39 45 49 66 78)中查找一个数,这个也是个经典的面试题,是二分查找变种,思路知道,但没写过代码,敲代码时思路不太清晰,写了挺久的

给你10亿个URL,这些URL属于1亿个不同的domain,举个例子,https://docs.google.com/document/d/ 这个URL的domain是docs.google.com,内存的限制是1GB,磁盘空间无限制,你可以对数据进行任意的预处理,之后会有很多个查询,每个查询的输入是domain,输出是属于这个domain的所有URL,比较土的方法可以用hash+外部排序,当前脑子一片空白,想不出外部排序,还扯了B树之类的结构



面试的时间是45分钟,总之就是悲剧了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: