腾讯一面总结
因为总感觉自己没准备好,所以一直到现在才投。。。
总结下一面题目吧,方便日后查阅
1.一道算法题
大致说一下题目:第一行输入两个数分别是n,m ------------ n代表一个升序的数组(可以其他的数据结构,比如vector,可以自己定义),例如5,代表1,2,3,4,5;m代表接下来要输入几行
接下来的输入的每一行是一个数字,代表在数组该位置的数字要被移到数组的头部
5 4
4
3
1
4
==> 4 1 3 2 5
这道题我的思路错了两次,面试官说有大致思路就行,让我用C语言实现swap函数,就说可以了,不用管那些测试用例
2.问答题
(1)给了一堆数据,写出快排的第一次排序结果
(2)列出来有近20个Linux命令,问我这都是干啥的
(3)多态是怎么实现的
(4)根据日志文件,查找当前时刻的在线人数
(5)sql 注入(对数据库一点都不熟)
3.(1)给出一段程序,问有什么错误
void get_memory(char *p)
{
p = malloc(100); // 这里应该用宏,不过它没让更改,所以我也没改,最好改成宏或者const定义
}
void test()
{
char *str = NULL;
get_memory(str);
strcpy(str, "hello world!"); //这里最好用strncpy,如果你不用,最好和面试官交流清楚
printf("%s\n", str);
}
简单说一下:我主要改了指向指针的指针,其他的都是面试官一提,都能想起来。举个栗子,这个100,就得立刻想到设置成常量,这个strcpy就会考虑越界问题,比如memcpy就要想到内存重叠问题
(2)请写出 printf 函数的原型
(3)请写出可以指向get_memory的函数指针
4.二进制(一个32位的int数据)中1的个数和2的个数
对于1的个数不能用循环,可以使用递归或者分治(二选一)
对于2的个数,我也不太明白,大致是32位分为4位一组,总共8组中的2的个数
5.在一个>10K并发的服务器中,有一个连接每次只要求打印(60字节)的日志数据,问应该如何优化?
我的回答:延迟,还有一个答案(我没答出来,有高手可以回答一下吗?)
思路:大致就是一次存储多次(假设是10次,会减少IO操作次数),瞎猜的,大佬总结就是延迟问题
6.前台cgi(不知道cgi是啥)是webserver生成的一个短暂进程,但是cgi在和服务器频繁的进行TCP通信(大致是这个意思),问这样设计有什么缺点?应该如何优化?
官方答案:会对server造成冲击
7.第一题也是一道算法题,时间不够,没让做,至此已经过去了一个多小时
原因是面试官电脑没声音,调声音调了10分钟,然后打字交流的,最后电话面试说每一道题的思路 50 分钟
剩下都是问一些基础的东西:
select和epoll的区别,数据库的基本特性了解吗(ACID,C是一致性,我竟然忘了),加密算法,对称加密算法和非对称加密算法(不会),进程间通讯方式等,还有一些忘了
当场给的结果,说基础还行,我会建议你二面,至此结束
#腾讯##面经##实习##春招##C++工程师#