前段时间专心面过腾讯,经过了N轮的技术面,结果还是挂了,但没挂在技术面,比较欣慰,回来之后写一点总结,以供有梦想进入腾讯做后台服务器开发的同学参考,本文章为胡成精心总结,胡成原创,copy和转载请通知。ps:()之内的文字由作者点评,非面试题文字。
linux和os:
netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的概率较小 ^_^ ,这四个命令的熟练掌握程度基本上能体现面试者实际开发和调试程序的经验)
cpu 内存硬盘等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看各进程状态抓包相关等相关命令必须熟练掌握
awk sed需掌握
共享内存的使用实现原理(必考必问,然后共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?)
c++进程内存空间分布(注意各部分的内存地址谁高谁低,注意栈从高道低分配,堆从低到高分配)
ELF是什么?其大小与程序中全局变量的是否初始化有什么关系(注意.bss段) 使用过哪些进程间通讯机制,并详细说明(重点)
makefile编写,虽然比较基础,但是会被问到
gdb调试相关的经验,会被问到
如何定位内存泄露?
动态链接和静态链接的区别
32位系统一个进程最多多少堆内存
多线程和多进程的区别(重点面试官最最关心的一个问题,必须从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催)
写一个c程序辨别系统是64位 or 32位
写一个c程序辨别系统是大端or小端字节序
信号:列出常见的信号,信号怎么处理?
i++是否原子操作?并解释为什么???????
说出你所知道的各类linux系统的各类同步机制(重点),什么是死锁?如何避免死锁(每个技术面试官必问)
列举说明linux系统的各类异步机制
exit() _exit()的区别?
如何实现守护进程?
linux的内存管理机制是什么?
linux的任务调度机制是什么?
标准库函数和系统调用的区别?
补充一个坑爹坑爹坑爹坑爹的问题:系统如何将一个信号通知到进程?(这一题哥没有答出来)
c语言:
宏定义和展开(必须精通)
位操作(必须精通)
指针操作和计算(必须精通)
内存分配(必须精通)
sizeof必考
各类库函数必须非常熟练的实现
哪些库函数属于高危函数,为什么?(strcpy等等)
c++:
一个String类的完整实现必须很快速写出来(注意:赋值构造,operator=是关键) 虚函数的作用和实现原理(必问必考,实现原理必须很熟)
sizeof一个类求大小(注意成员变量,函数,虚函数,继承等等对大小的影响) 指针和引用的区别(一般都会问到)
多重类构造和析构的顺序
stl各容器的实现原理(必考)
extern c 是干啥的,(必须将编译器的函数名修饰的机制解答的很透彻)
volatile是干啥用的,(必须将cpu的寄存器缓存机制回答的很透彻)
static const等等的用法,(能说出越多越好)
数据结构或者算法:
《离散数学》范围内的一切问题皆由可能被深入问到(这个最坑爹,最重要,最体现功底,最能加分,特别是各类树结构的实现和应用)
各类排序:大根堆的实现,快排(如何避免最糟糕的状态?),bitmap的运用等等
hash,任何一个技术面试官必问(例如为什么一般hashtable的桶数会取一个素数?如何有效避免hash结果值的碰撞)
网络编程:
tcp与udp的区别(必问)
udp调用connect有什么作用?
tcp连接中时序图,状态图,必须非常非常熟练
socket服务端的实现,select和epoll的区别(必问)
epoll哪些触发模式,有啥区别?(必须非常详尽的解释水平触发和边缘触发的区别,以及边缘触发在编程中要做哪些更多的确认)
大规模连接上来,并发模型怎么设计
tcp结束连接怎么握手,time_wait状态是什么,为什么会有time_wait状态?哪一方会有time_wait状态,如何避免time_wait状态占用资源(必须回答的详细)
tcp头多少字节?哪些字段?(必问)
什么是滑动窗口(必问)
connect会阻塞,怎么解决?(必考必问,提示:设置非阻塞,返回之后用select检测状态) 如果select返回可读,结果只读到0字节,什么情况?
keepalive 是什么东东?如何使用?
列举你所知道的tcp选项,并说明其作用。
socket什么情况下可读?
db:
mysql,会考sql语言,服务器数据库大规模数据怎么设计,db各种性能指标
最后:补充一个最最重要,最最坑爹,最最有难度的一个题目:一个每秒百万级访问量的互联网服务器,每个访问都有数据计算和I/O操作,如果让你设计,你怎么设计?
第二篇:腾讯20xx春招后台开发练习卷
?客?-中国最?IT笔试/?试题库NOWCODER.COM
腾讯2015春招后台开发练习卷
?. 多选选择题
1. 将?组?序的数据重新排列成有序序列,其?法有()
A
B
C
D拓扑排序快速排序堆排序基数排序
2. 某服务请求经负载均衡设备分配到集群A、B、C、D进?处理响应的概率分别是10%、20%、30%和
40%。已知测试集群所得的稳定性指标分别是90%、95%、99%和99.9%。现在该服务器请求处理失败,且已排除稳定性以外的问题,那么最有可能在处理该服务请求的集群是________。
A
B
C
DABCD
3. 下列说法正确的有( )
A
B
C
D环境变量可在编译source code时指定在编译程序时,所能指定的环境变量不包括class pathjavac?次可同时编译数个Java源?件javac.exe能指定编译结果要置于哪个?录(directory)
4. 下列说法错误的有( )
A
B
C
D数组是?种对象数组属于?种原?类int number=[]={31,23,33,43,35,63}数组的??可以任意改变
5. 下列说法错误的有( )
A
B
C
D能被java.exe成功运?的java class?件必须有main()?法J2SDK就是Java APIAppletviewer.exe可利?jar选项运?.jar?件能被Appletviewer成功运?的java class?件必须有main()?法
6. 卡?分布的样本?差分别是
A
Bn1
?客出品-
?客?-中国最?IT笔试/?试题库NOWCODER.COM
C2n
D4n
7. 如何减少换?错误?
A进程倾向于占?CPU
B访问局部性(locality of reference)满?进程要求
C进程倾向于占?I/O
D使?基于最短剩余时间(shortest remaining time)的调度机制
8. Please choose the right statement about constusage:
Aconst int a; //const integer
Bint const a; //const integer
Cint const *a; //a pointer which point to const integer
Dconst int *a; //a const pointer which point to integer
Eint const *a; // a const pointer which point to integer
9. 下列定义语句中,错误的是
Aint px*;
Bchar*acp[10];
Cchar(*pac)[10];
Dint(*p)();
10. 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( ) A公有类型
B私有类型
C保护类型
D友元类型
11.
给出以下定义,下列哪些操作是合法的?
const char *p1 = “hello”;
char *const p2 = “world”;
Ap1++;
Bp1[2] = ‘w’;
Cp2[2] = ‘l’;
Dp2++;
12. 以下集合对象中哪?个是线程安全的?( )
?客出品-
?客?-中国最?IT笔试/?试题库NOWCODER.COM
A
B
C
DArrayListVectorHashtableStack
13. 若下列所?变量均已经正确定义,?下表达式中不合法的是
A
B
C
Dx>>3+++ja=x>y?x:yx%=4
14.
test.c?件中包括如下语句:
#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a,b;
int_ptr c,d;
?件中定义的四个变量中,哪个变量类型不是指针类型?
A
B
C
D
E
Fabcd都是指针都不是指针
15. 不属于冯诺依曼体系结构必要组成部分是:
A
B
C
DCPUCacheRAMROM
?. 问答题
16. 有1000亿条记录,每条记录由url,ip,时间组成,设计?个系统能够快速查询以下内容
1.给定url和时间段(精确到分钟)统计url的访问次数
2.给定ip和时间段(精确到分钟)统计ip的访问次数
17.
实现?个简化的搜索提?系统。给定?个包含了?户query的?志?件,对于输?的任意?个字符串s,输出以s为前缀的在?志中出现频率最?的前10条query。
由于是分布式系统,假设?少有26台机器,每个机器存储以26个字?开头的query?志?件(如机器1存的
?客出品-
?客?-中国最?IT笔试/?试题库NOWCODER.COM
是a
字?开头的,机器2存的是以b字?开头的……)
每个机器上维护着?张哈希表,对于每条query, 在哈希表表中存放其地址(哈希地址为链式的),并对其进?排序,按频率由?到低进?排序。
当?户进?搜索时,可以很快定位到某台机器,并根据哈希表,返回出现频率最?的前10条query。
提?:
1、可以预处理?志
2、假设query不超过10亿条,每个query不超过50字节。
3、考虑在?查询量的情况下如何实现分布式服务
18. ??公司内部每个员?都会有?个专属的?作邮箱,邮箱的前缀是员?姓名的拼?全拼,例如张强的邮箱是zhangqiang@xiaomi.com,但同时公司?有很多同名的?,为了避免?家相互之间发错邮件,?程师们想了个规则来解决这个问题,即在这些同命?中,?职最早的邮箱前缀为姓名的拼?全拼,第?个?职的邮箱前缀为姓名的拼?全拼后?加“_a”,第三个?职的为姓名的拼?全拼后?加“_b”,以次类推,请按这个规则,如果公司?同时有3位名叫张强的员?,则他们的邮箱分别是
zhangqiang@xiaomi.com,zhangqiang_a@xiaomi.com,zhangqiang_b@xiaomi.com...邮箱前缀是员?在公司?的重要标识之?,问题来了:现在??要举??次全员野外拉练活动,要求所有员?必须排成?队出去,并且,有的员?要求他必须排在某?的前?或后?,作为组织者的你,收到这样的需求之后,如何给出?个让每个?都满意的排队?式呢?
Java:
class RequestItem
{
public String member;
public boolean standFront; //true表?要排在这个?的前?,false表?要排在这个?的后?
}
class Request
{
public String owner; //那个?提出的要求
List<RequestItem> requestItems; //他要排在哪些?的前?,哪些?的后?
}
List<String> getValidOrder(List<String>allMembers, List<Request> requests);allMembers就是所有员?的邮箱前缀,requests是?些?的排队要求。??公司现有?千名员?,每个?最多有10个排队要求(要排在?个?的前?或者后?算?个排队要求),也有?没有什么要求。现在你的任务是完成上?的getValidOrder函数,如果有合法的排队序列,那么返回其中任何?个。否则返回null。
登录?客?,参与以上题?讨论,查看更多笔试?试题
?客出品-