本来在一家杭州软件测试公司工作,三月初的时候无意中收到深圳腾讯云的电话(对方表明身份后,说看到我的简历,想和我聊聊。当时没有电面经验再加上也没有进来也没有投简历,爽快的答应聊就聊呗。上来就是技术问题,当时蒙了,我简历也不知道啥时候怎么他就知道啦,当时电面后想着估计黄啦),后面就没音讯啦,从那次以后开始踏上2016找实习的征途。之后再内推腾讯互动娱乐,没收收到电面。所以按照正常的实习生流程走下来。经过笔试,一个礼拜后于4月9号夜收到腾讯一面通知(4月10号),今天特意分享一下《十道腾讯软件开发工程师面试题》希望大家能够受用。
1、介绍一下你自己。(严格来说这个不能算一个问题,每家公司基本都要问)
一、OSI模型有几层?
二、说说C++的多态?为什么使用虚函数比非虚函数耗费的时间更多?
三、有一个全局变量int a=0,现在两个线程各自循环执行100次a++操作,问最后a的值是多少?
四、对于海量数据,用什么数据结构存储用户搜索的高频关键词比较合适?比如,当用户输入“黄”字,输入框要自动显 示“黄晓明”,“黄蓉”,“黄山”,“黄鹤楼”等提示,但是能存储的量很有限,所以需要选择恰当的数据结构。(我先后说 了数组和堆,似乎都被否决了)
五、智力题:一片草地的草每天匀速地长,m只羊花p天能吃完,n只羊花q天能吃完,问现在k只羊花多少天能吃完?( 记不清m,p,n,q,k的具体数值了,总之是根据已有的两个条件列出二元一次方程组来求解)
六、手写快速排序程序。快排的复杂度是多少?给定1组数1,4,5,5,8,9,7,在快排过程中这两个5是否会被交换?
七、简述怎样用两个栈实现一个队列的功能?只需实现入队、出队。
八、你想打开电视看世界杯,结果发现电视黑屏完全没反应,应该怎么检测故障?
二面的两个问题我是这么解答的:
九、写一个函数判断一个字符串里的小括号、大括号是否匹配。例如,输入为"(){}"时输出为true,输入为“{(aa)}”时输出为true,输入为“({)}”时输出为false。
(我用一个栈来存储,对字符串从左往右扫描,遇到左括号就压进栈里,遇到右括号就判断是否跟栈顶元素匹配,如果不匹配就让整个函数直接返回false,如果匹配就取出栈顶元素。注意右括号始终不会进栈。扫描完后如果栈不为空就说明还有多余的左括号,返回false;否则返回true。)
十、如果AB*C=DE,DE+FG=HI,其中从A到I这9个字母代表9个不同的数字,求这9个数字分别是多少。
(我写了5重循环,A,B,C分别从0到9循环,用一个布尔数组记录每个数字是否使用过,筛掉有重复数字的情况,然后可以直接根据AB*C=DE求出D,E,再筛掉有重复数字的情况,然后这个内层循环里再让F,G分别从0到9循环,可直接得出H,I,检查是否符合。最后面试官跟我说第2题他本来想让我用数学方法求解的,没想到我直接就写了代码了,他嫌麻烦了。)
最后问了一下个人的学习和生活情况。这位面试官搞并行处理,我到房间的时候他正在给另一个同学面试,他就拿来两张纸让我站在门口写代码,相当于把每人半小时的面试时间压缩了一半……
最后给大家再支个招:
可以去www.proginn.com里面搜索腾讯在职或者曾经在职的师兄,只需要简单的预约他们一个小时电话,然后就开始唠嗑吧,这样你入职的概率会大很多哦。