服务端没岗位了,hr叫我来投这个 但是感觉一点都不match,面试官人挺nice的,像个可爱的二次元。
我们这里用go比较少,考你一下c++吧。说说用过的数据类型
说说int的字节数和表示的范围。这个范围是怎么算的
那你知道这个数在计算机里是怎么表示的吗
好,那你讲一个熟悉的一个数据类型吧
你觉得数组每次插入元素需要的时间复杂度是多少?
说了应该是O(1)的但是有时候有扩容的话会发生迁移是O(n)的但是不经常扩容,所以还是O(1)的。
面试官不太满意,让我用科学点的方法描述,大概重新又描述了一遍。
假定每次数组扩容都是两倍,依次插入n个数字,需要几次扩容?
log(n),等比数组
实现一个每次扩容2倍的数组
操作系统中线程和进程的概念
开始有感情的吟诵八股,中间讲到共享内存被打断了
那进程是怎么去访问共享内存空间的?
感觉在引导我讲虚拟内存,开始吟诵虚拟内存八股
刚刚讲到了页表,那页表是如何进行分配的,统一在操作系统内部还是在每个进程中呢?
说了一下mmu的概念,但是具体在哪不确定,感觉两种都可以,两种方式都描述了一遍。
我们写程序的时候拿的是虚拟地址还是物理地址?
当然是虚拟地址,讲了一下拿物理地址的有害性。
那我们写程序都有去做虚拟地址和物理地址的转换?
操作系统会帮我们做的
那这样转换会不会很耗时?
扯了一下用户态和内核态,但是感觉每次指针都去做切换是不可能的,应该不会切换。所以不会耗时
随便了解了点项目问题结束
总结: 基础八股有点差,继续巩固。例如对操作系统的内存管理理解有点模糊,在这次面试里暴露了。