1 / 24
文档名称:

2021年腾讯后台开发面试题解答.docx

格式:docx   大小:70KB   页数:24页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

2021年腾讯后台开发面试题解答.docx

上传人:非学无以广才 2021/1/17 文件大小:70 KB

下载得到文件列表

2021年腾讯后台开发面试题解答.docx

相关文档

文档介绍

文档介绍:2021年腾讯后台开发面试题解答
linux和os:
netstat :显示网络状态
tcpdump:关键是截获经过本机网络接口数据,用以分析。能够截获目前全部经过本机网卡数据包。它拥有灵活过滤机制,能够确保得到想要数据。
ipcs:检验系统上共享内存分配
ipcrm:手动解除系统上共享内存分配
(假如这四个命令没听说过或不能熟练使用,基础上能够回家,经过概率较小 ^_^ ,这四个命令熟练掌握程度基础上能表现面试者实际开发和调试程序经验)
cpu 内存 硬盘 等等和系统性能调试相关命令必需熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必需熟练掌握
awk sed需掌握
共享内存使用实现原理(必考必问,然后共享内存段被映射进进程空间以后,存在于进程空间什么位置?共享内存段最大限制是多少?)
共享内存定义:共享内存是最快可用IPC(进程间通信)形式。它允很多个不相关进程去访问同一部分逻辑内存。共享内存是由IPC为一个进程创建一个特殊地址范围,它将出现在进程地址空间中。其它进程能够把同一段共享内存段“连接到”它们自己地址空间里去。全部进程全部能够访问共享内存中地址。假如一个进程向这段共享内存写了数据,所做改动会立即被有访问同一段共享内存其它进程看到。所以共享内存对于数据传输是很高效。
共享内存原理:共享内存是最有用进程间通信方法之一,也是最快IPC形式。两个不一样进程A、B共享内存意思是,同一块物理内存被映射到进程A、B各自进程地址空间。进程
A能够即时看到进程B对共享内存中数据更新,反之亦然。
c++进程内存空间分布(注意各部分内存地址谁高谁低,注意栈从高到低分配,堆从低到高分配)
ELF是什么?其大小和程序中全局变量是否初始化有什么关系(注意未初始化数据放在bss段)
可实施文件:包含了代码和数据。含有可实施程序。
可重定位文件:包含了代码和数据(这些数据是和其它重定位文件和共享
object文件一起连接时使用)
共享object文件(又可叫做共享库):包含了代码和数据(这些数据是在连接
时候被连接器ld和运行时动态连接器使用)。
使创建共享库轻易,使动态装载和共享库结合愈加轻易。在ELF下,在C++
中,全局结构函数和析构函数在共享库和静态库中用一样方法处理。
使用过哪些进程间通讯机制,并具体说明(关键)
makefile编写,即使比较基础,不过会被问到
mkdir mf
cd mf
vim makefile
:
gcc –c -Lm
make
./hello
gdb调试相关经验,会被问到
怎样定位内存泄露?
内存泄漏是指堆内存泄漏。堆内存是指程序从堆中分配、大小任意(内存块大小能够在程序运行期决定)、使用完后必需显示释放内存。应用程序通常使用malloc、realloc、new等函数从堆中分配到一块内存,使用完后,程序必需负责对应调用free或delete释放该内存块。不然,这块内存就不能被再次使用,我们就说这块内存泄漏了。
C++程序缺乏对应手段来检测内存信息,只能使用top指令观察进程动态内存总额。而且程序退出时,我们无法获知任何内存泄漏信息
使用Linux命令回收内存,能够使用ps、kill两个命令检测内存使用情况和进行回收。在使用超级用户权限时使用命令“ps”,它会列出全部正在运行程序名称和对应进程号(PID)。kill命令工作原理是向Linux操作系统内核送出一个系统操作信号和程序进程号(PID)
动态链接和静态链接区分
动态链接是指在生成可实施文件时不将全部程序用到函数链接到一个文件,因为有很多函数在操作系统带dll文件中,当程序运行时直接从操作系统中找。 而静态链接就是把全部用到函数全部链接到exe文件中。
动态链接是只建立一个引用接口,而真正代码和数据存放在另外可实施模块中,在运行时再装入;而静态链接是把全部代码和数据全部复制到本模块中,运行时就不再需要库了。
32位系统一个进程最多有多少堆内存
多线程和多进程区分(关键 面试官最最关心一个问题,必需从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回复,然后有一个问题必需会被问到:哪些东西是一个线程私有?答案中必需包含寄存器,不然悲催)
写一个c程序分辨系统是16位or32位
法一:int k=~0;
if((unsigned int)k >63356) cout<<"at least 32 bits"<<endl;
else cout<<"16 bits"<<endl;
法二://32为系统
int i=65536;