面试经验总结记录

本文是作者的面试经验总结,涵盖了操作系统、计算机网络、数据结构和C++等关键知识点。在操作系统方面,讨论了高并发的本质、线程池的工作原理、线程同步与进程通信方式、内存管理和LRU算法。计算机网络部分涉及UDP可靠传输、IP分片、TCP的可靠传输机制、SSL握手流程等。数据结构部分讲解了排序算法,如选择排序、冒泡排序等。C++部分涉及了函数指针、虚函数实现机制、智能指针等概念。此外,还介绍了HTTP的基本格式、GET和POST的区别以及cookie的作用。
摘要由CSDN通过智能技术生成

面试经验总结记录

操作系统

1、高并发的本质是什么

​ 充分利用多核CPU,解决IO速度和CPU速度的冲突 ,当碰到IO或者其他情况的阻塞的时候,如果是单线程会导致整个程序阻塞,但多线程可以有其他线程继续利用CPU资源继续工作

2、进程池,线程池,连接池(更偏向于JAVA的问题)

线程池创建的时候需要定义

  • 核心线程数大小(正常工作使用的线程数)
  • 最大线程数(当核心不能满足需求时,扩容能够扩展的最大线程)
  • 线程存活时间(超出核心线程数的线程维持时间)
  • 任务队列(用于存放等待的任务)
  • 拒绝策略(当队列已满,线程数达到最大还有新的任务进来)

3、线程池的扩充和删除

当任务队列已满,线程达到最大时,可以采用扩容策略进行扩容,动态增加核心线程数和最大线程数以满足任务数量的需求

线程池预热,线程池创建完成后,池里是没有线程的,所以需要预热

怎么让线程池的线程阻塞(suspend阻塞,resume唤醒)

4、线程同步的方式

  • 互斥量(只有一个线程能够访问)
  • 信号量(n个线程能够访问)
  • 条件变量

5、进程通信方式

  • 管道(匿名管道,父子进程单向流通,命名管道利用文件系统)
  • 系统IPC(消息队列,信号量,共享内存)
  • socket
  • 信号

6、进程的同步互斥方式

​ 信号量,消息队列,管程(通过只能在管程内部使用的条件变量来提供同步)

7、线程安全

通过加锁对临界区进行保护

8、锁的类型

互斥锁(只允许一个线程访问)

条件锁(条件变量,满足条件则唤醒)

自旋锁(忙等,不释放资源直到条件满足)

原子锁(原子操作,锁内不会被中断)

读写锁(读可重入,写会阻塞)

悲观锁(每次写入数据都假设其他线程会更改数据,因此需要加锁)

悲观锁又包括共享锁(也叫读锁,可以读,不能写)

也包括排它锁(也叫写锁,其他事务无法进入)

乐观锁(直到数据提交才加锁)

公平锁(多个线程通过申请的顺序进入队列排队,排第一位的能够获得锁)缺点:吞吐量低,其余线程都阻塞。

非公平锁(直接获取锁,获取不到才进行排队&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值