网易C++面经

多态,虚表虚指针,虚基类以及内存分布

函数重载
构造函数和复制构造函数能否为虚,为什么
一个对象的内存分布,多个虚函数占多大空间
shared_ptr介绍原理,weak_ptr如何解决引用传递
右值引用
编译器如何处理模版
编译中的导出符号表和未决符号表
反汇编时符号表的状态
比较c++和java
介绍一下stl的list,查找list复杂度
unorder_map插入复杂度
stl迭代器重载
遍历vector的几种写法
数据库常用数据结构,b+树的好处
图的bfs和dfs
快排,复杂度,最坏情况以及设计算法解决
tcp和udp
如何用udp封装实现tcp
进程和线程
如何保证线程安全
互斥锁原理和使用

1、inline的用法?

2、class A

{

int a;

short b;

int c;

}

sizeof(A)的大小?类中加上double d;呢?

3、你知道什么排序算法?它们的平均复杂度各是多少?其中稳定的排序有哪些?

4、说一下快排。它的最坏复杂度是多少?什么情况下最坏?

5、说一下归并?

6、哈希是什么?哈希如何存储数据?什么情况下用到哈希?

7、说一下static的作用?

8、虚函数你知道吗?它是如何实现的?

9、如何让一个类被有限次数的实例化?

10、纯虚函数是什么?如何定义?

11、一个类如何被称为抽象类?抽象类可以实例化吗?为什么?

12、如何比较两个对象?

13、跳台阶,一次跳1阶或2阶,n阶有多少种跳法?(最多能跳n阶呢?)(动态规划,递归)

14、一个链表,实现它的翻转。(当时定义了三个指针, = =反正挺简单的)

15、有一个数组,所有数据都可以是负数、0、正数,求和最大的连续序列。如果是一个矩阵呢?(矩阵的没答上)

16、stl库懂吗?你常用的有什么?

17、vector的底层是什么?它是如何实现动态分配空间的?如果将其中一个元素删除,那么它的地址空间是怎么样的?

18、map、set知道吗?(知道,底层红黑树。既然你说到红黑树,那说一下红黑树是什么?它的实质是什么?如何实现的?)说一下它们的区别?

19、线程和进程的区别?线程间如何通信?线程共享的资源有什么?

20、TCP和UDP的区别?TCP如何实现可靠传输?它们的传输方式?

21、socket懂吗?如何实现?

22、堆和栈的区别?
二面(可能有一些在上面,具体也记不清了):

23、给你一串字符串,压缩它有几种方法?

24、vector赋值n个数,它需要拷贝几次?

25、基类A,派生类B继承于A,A *a = new B[10]是否正确?会发生什么错误?a[5]能正确的取到对象吗?

26、两个链表,判断他们是否有相交部分?如果他们相交部分有环呢?

27、一副扑克,如何等概率洗牌?不消耗额外空间呢?

一面:
似乎是个不太厉害的面试官,只会问一些套路问题,一开始在纸上写好了一堆考察C++的笔试题,然后让你现场答。
有点印象的记得问了一些指向函数指针的数组怎么写?
char a[] = “test” char b[] = “test”
char *p = “test” char *t = “test”
a==b ?
p==t ?
然后基本一直考察算法:
二叉树非递归中序遍历。
讲一下因为保密协议不能说的笔试题(我觉得巨简单,然而一面面试官似乎并不能轻松看懂我的代码,现在回想起来感觉对网易的技术印象有点降低了)
一个ip地址段(由首地址ip和尾地址ip组成,保证连续)表,怎么找到一个ip属于其中哪一个地址段? (因为ip段不重合,根据首地址排序后二分找就可以了,感觉这题有点迷之简单。)
然后面试官就问ip段重合怎么办?然后当时没想出来,问题转化成查询覆盖一个点的所有线段。
二面:
这次还是有点分量的面试官。
一边充当hr一边充当面试官。
一致性哈希。
手撕智能指针。
给一个情景题,设想产生很多要求保序的请求从多个机器上发到一个多线程的代理上,再由代理调用分布式的数据库,怎么保证这个过程中的顺序不乱。
然后开始继续怼算法:
求一个数组左边之和最接近右边之和的节点。我想的是用前缀和来搞。
求中位数。
求一个流动数组的中位数,每次加入元素都要返回中位数,两个堆解决。

1,c++多态的实现。讲了c++虚函数表,单继承,多继承,虚继承以及为什么虚继承,调用过程
2,智能指针。
3,熟悉stl的什么结构。我说的是看过sgi 的stl源码。就问了什么情况用vector什么情况用list,
以及vector的insert,erase,remove的实现还有重新申请内存的情况

发表评论

电子邮件地址不会被公开。 必填项已用*标注