1.自我介绍,介绍项目。
2.程序内存崩溃了怎么办?
答:gdb core dump文件,backtrace可以查看哪里有段错误
3.Linux下查看程序内存状况
答:top指令可以查看按内存大小排序的查询内存状况,或者查看/proc/pid/status文件,这个文件会记录进程id所代表的进程的内存状态
4.C++的重载
同名不同参数的函数,在链接的时候,符号表里会给同名函数取唯一的名字
5.C程序的编译过程
预处理:替换掉带#的东西,如#include,#define
编译:C源码翻译成汇编
汇编:汇编翻译成机器代码
链接:符号解析和重定位,将程序每一个全局变量和全局函数的引用和符号表里的一个符号对应起来,重定位确定每一个模板模块的全局变量和函数在可执行文件内存空间的位置
6.C程序的内存空间
.text:二进制代码段,以及只读数据
.data:全局变量
.bss:未初始化的全局变量
堆
栈
环境变量,参数
内核
7.用户态和内核态
8.有抓过rpc的包吗?
没有。。。rpc都定义好了消息格式
rpc用的什么序列化协议?
protobuffer
那万一一方没接收到rpc包怎么办?
看tcp状态吧,通过查看相关tcp端口状态看有没有连接上
说一下TCP的全过程,
三次握手四次挥手
什么时候会是TIME_WAIT状态,客户端接受到服务器发来的FIN包,并且向服务器发出ACK的时候,
客户端变成TIME_WAIT状态,并且等两个MSL时间(一个数据包平均来回时间)就变成CLOSED状态
为什么要等两个MSL?
一般情况下一个MSL时间服务器就应该收到了ACK包,客户端等两个MSL就认为服务器收到了ACK,自己就关闭连接
还知道哪些包?
RST,在三次握手过程中,如果客户端发出了ACK包给服务器,客户端认为建立连接,而服务器没收到ACK。如果此时客户端给服务器发数据,
服务器会返回RST(reset),强行关闭连接
还知道其他的么?
不知道了......
9.STL里的map用的是红黑树,讲一下红黑树
只知道是近似的二叉平衡搜索树,插入删除是常数时间,没仔细研究具体结构。。。
10.项目相关,程序性能有瓶颈怎么办?
回答的不太好,主要从程序设计角度考虑的性能
项目里怎么应对高并发:
I/O多路复用处理请求,项目打包成docker,可以多进程处理调用
11.最近学什么,有学习深度学习吗
点击作者姓名与作者大佬交流~
作者:nk定风波
来源:
牛客网(www.nowcoder.com)
- 互联网名企笔试真题
- 校招求职笔经&面经
- 程序员/产品/运营求职实习信息
- 程序员/产品/运营学习交流社区
网友评论