date: 2020-04-02 原本打算是一面和二面的面经写在一起,对照参考一下,不过比较出乎意料的是二面仅仅问了一面里没答上来的问题,然后做了两道算法题。 一面 2020年3月23日 一面面试官人很好,很有耐心,问了特别多东西,整场面试下来花了有 100 分钟 ...
传统cpu调度背景 操作系统原理 线程切换的时机和代价 go是怎样的思路: 将调度维持在用户态 推出用户态runtime代码实现的轻量级线程 go 调度策略 常规: 本地队列 其他队列 全局队列 协作式调度: 基于用户态事件 异步io: 网络: 基于netpoller 同步io: 产生M goroutine的生命周期的实现 只想关注golang goroutine背景 调度方式 生命周期的请关注 ...
2022-03-15 13:58 1 1190 推荐指数:
date: 2020-04-02 原本打算是一面和二面的面经写在一起,对照参考一下,不过比较出乎意料的是二面仅仅问了一面里没答上来的问题,然后做了两道算法题。 一面 2020年3月23日 一面面试官人很好,很有耐心,问了特别多东西,整场面试下来花了有 100 分钟 ...
视频面试,上来就是一道算法题,LeetCode上的原题,440题(qaq,后悔当初没写到) 然后是java的一些问答题 Map的实现方式有哪些,分别是怎么实现的 ...
一、Golang 线程和协程的区别 备注:需要区分进程、线程(内核级线程)、协程(用户级线程)三个概念。 进程、线程 和 协程 之间概念的区别 对于 进程、线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法) 对于 协程(用户级线程),这是 ...
一。并发&并行 一个应用程序 ---> 一个进程 ---> 运行在自己内存地址空间里的独立执行体 ---> 同一个内存地址空间的一起工作的多个线程 一个并发程序 ---> 多个线程来执行任务 ---> 某个时间点同时运行在多核或者多处理器 ...
我们知道 Go 语言最大亮点之一就是原生支持并发,这得益于 Go 语言的协程机制。一个 go 语句就可以发起一个协程 (goroutin)。协程本质上是一种用户态线程,它不需要操作系统来进行调度,而是由用户程序自行管理和调度。它寄存于线程中,系统开销极小,可以显著的提高性能和并发能力。使用协程 ...
协程的特点 1.该任务的业务代码主动要求切换,即主动让出执行权限 2.发生了IO,导致执行阻塞(使用channel让协程阻塞) 与线程本质的不同 C#、java中我们执行多个线程,是通过时间片切换来进行的,要知道进行切换,程序需要保存上下文等信息,是比较消耗性能的 GO语言中的协程 ...
func main() { wg.Add(2) go test1() go test2() wg.Wait() } func test1() { defer wg.Done() for i:=0;i<10;i++{ fmt.Println(i ...
进程、线程和协程 进程的定义: 进程,是计算机中已运行程序的实体。程序本身只是指令、数据及其组织形式的描述,进程才是程序的真正运行实例。 线程的定义: 操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 进程和线程的关系: 一条线程指的是进程中一个单一顺序 ...