当前位置: 首页 >> 面试题 >> 技术 >> 后端开发 >> C/C++ >>

十道腾讯软件开发工程师面试题

一、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个数字分别是多少。

 

A

 

2

 

多态不说。 虚成员函数的位置和非虚成员函数的在在内存存放的位置不一样,虚函数在虚表,虚表多的话,寻找一个虚函数就需要遍历所有虚表,但是成员函数可以直接通过偏移而得到。

 

3

 

这是个 线程锁 的问题。答 200 你就坑了。

 

4

 

关键词 倒排索引

 

7

 

队列:先进先出 栈:后进先出

准备2个栈Sa,Sb, 数据 12345 下面来模拟队列的 12345顺序入队,12345顺序出队 效果: 12345-> Sa压栈: 12345 Sa出栈-> 54321 54321-> Sb压栈: 54321 Sb出栈-> 12345

 

8

 

看毛世界杯,今年欧洲杯

 

9

 

10

 

第一反应 排列组合 然后就是python了

 

#! usr/bin/env python

# coding: utf-8

import itertools

 

arr = list(itertools.permutations(range(1, 10), 7))

 

“””

nine numbers: 1,2,3,4,5,6,7,8,9

 

calc AB*C=DE,DE+FG=HI

“””

 

 

def func(nums):

    a, b, c, h, i, f, g = nums

    if (a * 10 + b) * c == (h * 10 + i) – (f * 10 + g):

        de = (a * 10 + b) * c

        d, e = int(str(de)[0]), int(str(de)[1])

        if all([x not in nums for x in [d, e]]):

            print(“%s%s*%s=%s%s,%s%s+%s%s=%s%s” %

                  (a, b, c, d, e, d, e, f, g, h, i))

            return True

 

 

for item in arr:

    if func(item):

        break

Loading