网易雷火客户端暑假实习面经
网易雷火客户端暑假实习面经
人生第一次面试呀,作为一个菜鸡acmer,只有一些基础知识。项目只在linux环境下实现了给评测机,很简陋。
面试感觉:面试官很好,交流起来就不紧张了,两面,一面45分钟。感觉是平行的面试,一些问题重叠了。大概是大学各种科目的轰炸。
标准开局:请简单介绍下你自己。
标准结局:你还有什么问我的吗。
问的问题很多,能记得多少写多少把,感觉面试官看着一份面试题大全在一题一题问。
网络:
- 简述TCP,UDP。如果设计一个可靠传输的UDP怎么设计。
我往TCP的实现原理上答,滑动窗口,发送后确认收到,自顶向下的大黑书里面有个可靠传输有个状态机的模型。
操作系统:
- 线程,和进程的区别(背书题,没什么好说的)
- 线程的调度
最短作业优先,时间片划分,优先级调度,多级队列的时间片调度。 - 操作系统内存管理了解吗
答了内存碎片, 如何找一个合适大小的内存块申请。还说了malloc的底层原理,操作系统如何处理并发的内存分配pt_malloc - 内存调度不够了怎么办
操作系统处理看能否释放内存,内存会用完吗,提到了虚拟内存机制内存置换机制。 - 操作系统进程调度,银行家算法了解吗
卡了一下,然后还是答出来了。有点忘记了
6.多线程编程了解吗
了解c++11标准的多线程,简单描述了下互斥量之类的。
数据库:
- 我有一个很大的表中查一个东西如何优化
分库,分表,索引优化
语言方面:
(c++是最多的,因为我写了c++把,我简历写了解一些新标准和stl)
-
c++新标准了解那些。
我答了右值应用,移动构造,为了解决就标准vector push_back拷贝损耗的区别。
智能指针,以及他的实现原理是引用计数。能用share_ptr初始化unique_ptr吗。我说没用过 -
vector中能传引用吗,底层实现原理(两倍扩容)
我说看过源代码是个泛型应该是可以传引用的,但是我没试过。
引用的vector中,出现扩容的情况会怎么样。我说不太了解。 -
多态
说了函数名重载,后面其他问题提到了虚表和虚指针。 -
什么时候是引用,什么时候是值
面试官问c#,c++的情况struct,class,c#只是用过,很多不了解。c++方面答的还行。 -
多继承的两个子类都实现了一个同名函数,具体会调用那一个
我说没试过,回来后来试了一下会编译错误。 -
链表和数组的优劣
插入值的效率方面问题。 -
标准库了解那些
看过侯捷的STL源码分析,所以扯了点东西,容器,算法,迭代器,分配器,仿函数,适配器。
算法:
-
我有一个生成[0,1]随机数的函数,把A块钱分给B个人怎么弄。尽量少调用方法。
这个感觉是我答的最不好的一个问题。。。只答出了朴素的方法。其他算法相关应该都算是秒了 -
最小生成树相关
当然是讲堆优化的prim和并查集的kruskal拉 -
动态规划和贪心,贪心一定是对的吗
贪心是局部最优作为整体最优。证明是对的必须要证明局部最优就是整体最优。动态规划是一个阶段的最优。提到了有向无环图模型,还有具体状态方程要具体分析。很泛的谈,没有具体题目。 -
提到了数据结构基于随机算法生成迷宫和寻路算法
面试官说比较好奇我说过的随机生成迷宫的算法,这个想了解的去百度递归生成迷宫把,我简述了下。寻路我讲了A*的原理。
设计模式:
说我刚刚开课,自己了解过一些。举了STL底层queue源代码封装了deuqe的一个设计模式,适配器模式。代码的设计原则,对修改封闭,对扩展开放之类的。如何写出的代码是好的,扯到代码格式规范那边去了。。。。后来说你没看过设计模式就算了。
计算机组成原理???
听到这个我简直吐血,还好问的不难,浮点数存储原理IEEE浮点数原理。然后写代码的使用要注意什么,答了比较相等的时候fabs(a-b)<eps的问题。
编译原理
图形学没学过就不问了。
项目:
linux下acm评测机原理,讲了下如何编译用户代码,导出错误信息(makefile)。进程间系统调用监控子进程的时间,内存。正确度比对怎么实现之类的。
其他:
- 玩什么游戏(如实答,大学后少了,之前玩过XXX)
- 对游戏开发有什么了解吗(只写过题的菜鸡acmer哪里有什么了解)
还有些什么问题吗:我问了实习生的计划
面试官说 客户端方向:如果端游会使用自己的游戏引擎,手游会用unity(所以才问我c#吧)。
最后第二面面试官评价:基础知识还可以,面对团队开发最好要看一看设计模式,关于图形学可以学习一下(稳了 or 劝退?)我之前说了没开图形学的课。
目前就想到了这么多
面试还是学了些新知识的。面试感觉还挺好的,但是不少问题都没答出来,算是还没凉透吧。。。
#实习##面经##网易##C++工程师#