【0201】32个Java 面试必考点 操作系统与计算机网络
一、操作系统
操作系统知识对于服务问题的排查定位十分重要
二、进程与线程
1、首先需要掌握进程与线程的区别和联系:
A) 进程是系统资源分配的最小单位,线程是程序执行的最小单位;
B) 进程使用独立的数据空间,而线程共享进程的数据空间。
2、线程调度:如时间片轮转调度、先来先服务调度、优先级调度、多级反馈队列调度以及高响应比优先调度。
3、线程切换的步骤:线程的上下文切换,明白线程切换的代价。
4、进程间通信(IPC) 6 种进程通信方式的原理与适用场景。例如,进程间数据共享的场景可以使用共享内存;进程间数据交换的场景可以使用 Unix Socket 或者消息队列。
5、协程部分:了解协程更轻量化,是在用户态进行调度,切换的代价比线程上下文切换要低很多。了解 Java 的第三方协程框架,例如 Kilim、Quasar 等。
三、Linux 常用命令
1、 学习 AWK、top、netstat、grep 等高频使用的工具。
2、内存分页管理与Swap机制、任务队列与CPU Load等
3、内存屏障、指令乱序、分支预测、NUMA 与 CPU 亲和性等