首页 > 网易初级游戏研发工程师一面(90min)
头像
Lucky&Hard
编辑于 2020-08-28 16:40
+ 关注

网易初级游戏研发工程师一面(90min)

1、手撕LFU页面置换算法(讲思路并手撕O(1))

2、激光导航怎么解决误差累积

3、多态怎么实现的

4、虚函数结构(讲讲虚函数表是什么,子类的内存结构是怎样的)

5、STL容器和算法

6、迭代器的分类

7、泛型模板编程了解多少

8、C++内存泄漏(智能指针)

9、快速排序的时间和空间复杂度分析(最好,最坏,平均时间复杂度,空间复杂度),给一串数字,问你第一次快排后的结果

10、解决Hash冲突的方法(开放地址,拉链。。。)

11、TCP三次握手四次挥手 、TCP和UDP的区别

12、解释Socket字段(四元组)

13、网络编程的流程(有写过post,get。。。。吗)

14、Socket的阻塞与非阻塞

15、线程和进程的区别

16、进程调度的方法

17、进程开销为什么会大

18、虚拟内存和物理内存

当每一个进程创建的时候,就会为其分配4G的虚拟内存,当该进程还没有开始运行时,并不会立即就把虚拟内存对应位置的程序数据和代码拷贝到物理内存中,只要建立好虚拟内存和磁盘文件之间的映射就好,当运行到对应程序的时候,进程去寻找页表,发现页表中地址没有存放在物理地址上,而是在磁盘上,于是将磁盘上的数据拷贝到物理内存中(发生缺页异常)

进程开始要访问一个地址,它可能会经历下面的过程:

每次我要访问地址空间上的某一个地址,都需要把地址翻译为实际物理内存地址

所有进程共享这整一块物理内存,每个进程只把自己目前需要的虚拟地址空间映射到物理内存上

进程需要知道哪些地址空间上的数据在物理内存上,哪些不在(可能这部分存储在磁盘上),还有在物理内存上的哪里,这就需要通过页表来记录

页表的每一个表项分两部分,第一部分记录此页是否在物理内存上,第二部分记录物理内存页的地址(如果在的话)

当进程访问某个虚拟地址的时候,就会先去看页表,如果发现对应的数据不在物理内存上,就会发生缺页异常

缺页异常的处理过程,操作系统立即阻塞该进程,并将硬盘里对应的页换入内存,然后使该进程就绪,如果内存已经满了,没有空地方了,那就找一个页覆盖,至于具体覆盖的哪个页,就需要看操作系统的页面置换算法是怎么设计的了。

页表的工作原理

我们的cpu想访问虚拟地址所在的虚拟页(VP3),根据页表,找出页表中第三条的值.判断有效位。 如果有效位为1,DRMA缓存命中,根据物理页号,找到物理页当中的内容,返回。

若有效位为0,参数缺页异常,调用内核缺页异常处理程序。内核通过页面置换算法选择一个页面作为被覆盖的页面,将该页的内容刷新到磁盘空间当中。然后把VP3映射的磁盘文件缓存到该物理页上面。然后页表中第三条,有效位变成1,第二部分存储上了可以对应物理内存页的地址的内容。

缺页异常处理完毕后,返回中断前的指令,重新执行,此时缓存命中,执行1。

将找到的内容映射到告诉缓存当中,CPU从告诉缓存中获取该值,结束。


19、静态链接库和动态链接库

20、3个圆形摆在平面上,两两外切,问是否能够确定这三个圆心的相对位置
记不得了,问题有点多。。。

更多模拟面试

全部评论

(6) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐