全网最全操作系统八股文讲解(25秋招走起~)

张洪亮

小林coding

一、硬件结构

2.1 CPU 是如何执行程序的?

2.2 磁盘比内存慢几万倍?

2.3 如何写出让 CPU 跑得更快的代码?

2.4 CPU 缓存一致性

2.5 CPU 是如何执行任务的?

2.6 什么是软中断?

2.7 为什么 0.1+0.2 不等于 0.3 ?

二、操作系统结构

3.1Linux内核vsWindows内核

三、内存管理

4.1 为什么要有虚拟内存?

4.2 malloc 是如何分配内存的?

4.3 内存满了,会发生什么?

4.4 在 4GB 物理内存的机器上,申请 8G 内存会怎么样?

4.5 如何避免预读失效和缓存污染的问题?

4.6 深入理解 Linux 虚拟内存管理

4.7 深入理解 Linux 物理内存管理

四、进程管理

5.1 进程、线程基础知识

5.2 进程间有哪些通信方式?

5.3 多线程冲突了怎么办?

5.4 怎么避免死锁?

5.5 什么是悲观锁、乐观锁?

5.6 一个进程最多可以创建多少个线程?

5.7 线程崩溃了,进程也会崩溃吗?

五、调度算法

6.1进程调度/页面置换/磁盘调度算法

六、文件系统

7.1文件系统全家桶

7.2进程写文件时,进程发生了崩溃,已经写入的数据会不会丢失 ?

七、设备管理

8.1键盘敲入A字母时候,OS系统期间发生了什么?

八、网络系统

9.1 什么是零拷贝?

9.2 l/0 多路复用:select/poll/epoll

9.3 高性能网络模式:Reactor和Proactor

9.4 什么是一致性哈希?

九、Linux命令

10.1如何查看网络的性能指标?

10.2如何从日志中获取UV?

JavaGuide

来自牛客和别的地方的面经(暂时没有答案)

承担了一部分hr面的职能,最后周一也就是7号hr来加我商量入职,可惜当时我已经接了字节的offer了,所以最终就没去百度

物理内存和虚拟内存的区别

  1. malloc拿到的是什么内存
  2. 对于编程来说,malloc拿到的是物理内存还是虚拟内存是不是都没什么影响
  3. 虚拟内存对于操作系统和对于写代码能帮到什么忙
  4. 虚拟内存如何知道在磁盘的哪个位置,以及如何加载入内存
  5. 操作系统怎么知道它需要执行上述操作
  6. 讲一下缺页中断的机制
  7. 虚拟内存除了你刚才说的,还有其他优势吗
  8. a进程创建了一个共享内存,怎么通知b进程该共享内存的位置

进程运行时,怎么找到程序的加载位置

问了缺页算法和内存淘汰算法

模拟运行LRU,并指出缺页发生在哪些时候

TCP协议中,滑动窗口左右边界相关

一个HTTP协议可以通过两个TCP连接传输数据吗

两个HTTP协议可以通过一个TCP连接传输数据吗

HTTPS中SSL加密协议是怎么加密的

9、fork() 的原理,哪里体现了fork分配资源?10、fork()是把进程从1个变成2个,那么最初的进程是从哪里来的?

启动进程是用户态还是内核态?

进程是通过fork创建的,linux下线程是怎么创建的?

select poll epoll

直接 new 一个 1GB 大小的数组怎么实现的, 还是说虚拟地址

不用虚拟地址,只用物理地址不可以吗?

两个线程可以同时读写一个文件吗?可以同时读吗?不会出现读一半的情况吗?

中断的类型

终端的作用和

系统中堆栈的作用和区别

如果内存满了,会发生什么?

在 4GB 物理内存的机器上,申请 8G 内存会怎么样?

如何避免预读失效和缓存污染的问题?

深入理解 Linux 虚拟内存管理

深入理解 Linux 物理内存管理

一个进程最多可以创建多少个线程?

线程崩溃了,进程也会崩溃吗?

进程写文件时,进程发生了崩溃,已写入的数据会丢失吗?

一致性哈希是什么,使用场景,解决了什么问题?

明天Redis + MySQL + OS

训练营

操作系统面试题题库

系统调用为什么慢


林秋地OS面试题总结

1. 简单说下你对并发和并行的理解?

2. 同步、异步、阻塞、非阻塞的概念

3. 进程和线程的基本概念

4. 进程与线程的区别?

5. 为什么有了进程,还要有线程呢?

6. 进程的状态转换

7. 进程间的通信方式有哪些?

8. 进程的调度算法有哪些?

9. 什么是死锁?

10. 产生死锁的原因?

11. 死锁产生的必要条件?

12. 解决死锁的基本方法?

13. 怎么预防死锁?

14. 怎么避免死锁?

15. 怎么解除死锁?

16. 什么是缓冲区溢出?有什么危害?

17. 分页与分段的区别?

18. 物理地址、逻辑地址、虚拟内存的概念

19. 页面置换算法有哪些?

20. 谈谈你对动态链接库和静态链接库的理解?

21. 外中断和异常有什么区别?

22. 一个程序从开始运行到结束的完整过程,你能说出来多少?

23. 什么是用户态和内核态

24. 用户态和内核态是如何切换的?

25. 进程终止的方式

26. 守护进程、僵尸进程和孤儿进程

27. 如何避免僵尸进程?

28. 介绍一下几种典型的锁?

Java八股文是指那些重复、枯燥、概念不清、过于简单的大量Java编程的套路和公式化流程的文章和教材。这些文本包括编程模板、简单易懂的例子、没有系统性深入的分析和解释。相当一部分程序员在学完这些“八股文”后,虽然能够写出一些简单的Java程序但是对于Java语言的真正理解和Java开发实践较为陌生。此外,许多针对“大厂”的Java八股文面前就显得相当“不具有说服力”了。 首先,Java八股文的核心问题是,它们没有真正涵盖Java编程的全面知识和实践经验。Java编程具有很多复杂的部分,需要逐个理解和深入学习,涵盖从Java的基础知识、算法和数据结构、Java虚拟机、并发和多线程编程、网络和数据库编程等众多方面。 其次,Java八股文没有体现出Java应用的真正意义和应用价值。Java是一种支持多平台、高效而功能强大的语言,可以用于网络开发、移动开发、企业级应用等多个领域。除了要掌握语法和基本框架,还需要对不同领域的开发要求有深刻的了解,才能写出高效、健壮、易扩展的程序。 最后,Java八股文强调的是套路和常规,而真正的Java开发需要快速的反应能力和解决问题的能力。即使学习了许多套路,如果遇到某些特殊的技术难点或问题,通过套路去解决并不一定会取得最佳的结果。 因此,要真正学好Java编程语言,我们需要深入学习Java的核心知识和实践经验,从基础到深入掌握Java语法和应用实现,遇到实际问题时还要保持灵活变通的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值