没有合适的资源?快使用搜索试试~ 我知道了~
腾讯后台开发面试题解答
5星 · 超过95%的资源 需积分: 9 254 下载量 168 浏览量
2012-10-16
13:44:01
上传
评论 2
收藏 78KB DOCX 举报
温馨提示
试读
27页
(腾讯)后台开发面试题解答
资源推荐
资源详情
资源评论
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
hello.o:hello.c hello.h
gcc –c hello.o -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;
cout<<i<<endl;
int j=65535;
cout<<j<<endl;
写一个 c 程序辨别系统是大端 or 小端字节序
用联合体:如 char 类型的,可以看他输出的是 int 的高字节还是低字节
信号:列出常见的信号,信号怎么处理?
i++是否原子操作?并解释为什么?
说出你所知道的 linux 系统的各类同步机制(重点),什么是死锁?如何避免
死锁(每个技术面试官必问)
死锁的条件。(互斥条件(Mutual exclusion):1、资源不能被共享,只能
由一个进程使用。2、请求与保持条件(Hold and wait):已经得到资源的进
程可以再次申请新的资源。3、非剥夺条件(No pre-emption):已经分配的
资源不能从相应的进程中被强制地剥夺。4、循环等待条件(Circular
wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占
剩余26页未读,继续阅读
dunderhead
- 粉丝: 7
- 资源: 130
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页