前言
上一篇文章我们介绍了在面试中操作系统有关线程和进程常见的面试题。这篇文章我们继续给大家介绍常见的问题。这篇文章将给大家介绍操作系统中系统相关的问题。
面试题及参考答案
1、请你说一说Linux虚拟地址空间
2、请你说一说操作系统中的程序的内存结构
3、请你说一说操作系统中的缺页中断
4、请问如何修改文件最大句柄数?
vi /etc/security/limits.conf 添加
* soft nofile 65536
* hard nofile 65536
5、请问MySQL的端口号是多少,如何修改这个端口号
6、请你说一说操作系统中的页表寻址
7、请你说一说OS缺页置换算法
8、请你说一下虚拟内存置换是什么以及相关方式
9、给你一个类,里面有static,virtual,之类的,来说一说这个类的内存分布
10、 请你回答一下静态变量什么时候初始化
11、请你说一说用户态和内核态区别,并且说一说用户态到内核态的转化原理?以及为什么要分内核态和用户态?
12、windows消息机制知道吗,请说一说
13、C++的锁你知道几种?
14、说一说你用到的锁
15、请你说一说内存溢出和内存泄漏
16、 系统调用是什么,你用过哪些系统调用
17、请你来说一下微内核与宏内核
18、请你来介绍一下5种IO模型
19、请你来说一下linux内核中的Timer 定时器机制
20、你怎么理解操作系统里的内存碎片,有什么解决办法?
21、请谈一谈,系统如何提高并发性?
22、请你解释一下,通常系统CPU比较高是什么原因?
1、首先查看是哪些进程的CPU占用率最高(如下可以看到详细的路径)
ps -aux --sort -pcpu | more
定位有问题的线程可以用如下命令
ps -mp pid -o THREAD,tid,time | more
2、查看JAVA进程的每个线程的CPU占用率
ps -Lp 5798 cu | more # 5798是查出来进程PID
3、追踪线程,查看负载过高的原因,使用JDK下的一个工具
jstack 5798 # 5798是PID
jstack -J-d64 -m 5798 # -j-d64指定64为系统
jstack 查出来的线程ID是16进制,可以把输出追加到文件,导出用记事本打开,再根据系统中的线程ID去搜索查看该ID的线程运行内容,可以和开发一起排查。
总结
由于操作系统面试的内容较多,因此上一篇文章、本篇文章以及接下来的文章都是对面试中常见的操作系统问题进行了简单的总结,一方面是为了方便自己以后面试的复习,另外也是给大家再次面试相关岗位的时候提供复习方向以及思路解答。这里就需要我们对操作系统有一个较为深层次的理解。于是,我们在准备的时候,首先就应该夯实基础,只有这样才能在众多的面试者中脱颖而出。另外,作为在计算机行业工作的从事者,掌握一些基础的操作系统的知识是很有必要的,也是我们的基本素养。最后希望大家不断进步,都能尽早拿到自己比较满意的offer!!!!继续加油,未来可期!!!!