卧槽,京东面试一面面经

全程懵逼....

析构函数,为什么父类要是虚析构

那我可不可以把父类的所有成员函数都写为虚...我说理论上可以,但是一般不这么写啊...面试官又说那我就为了防止之后的多态的应用错误,所以要给父类的所有成员函数加virtual可不可以?我说可以,那有什么问题?我不说话、面试官笑了一下说下一问题

还有道题,指针与引用了解吗?我说了解,经常用,面试官问引用作为函数返回值存在的问题,我说局部变量返回饮用会出问题,面试官说那我可不可以在调用函数中new一个对象返回这个对象的引用?我说可以,但是要注意最后释放内存...

说一下线程同步的方式,我说互斥量,条件变量,信号量、还有呢?我就了解这些

epoll边沿出发水平出发区别

epollwait时候如果客户端断开链接,那epollwait这边收到的事件是什么....我不知道,刚刚查了一下是epollin

网络熟悉吧,我说熟悉,怎么设计一个udp让他像tcp一样可靠,我回答就像tcp一样加入确认应答balabala,

redis熟悉?我说看过一些书,问:redis的持久化方式?主从复制了解过吗?balabala

怎样避免死锁 balabala

共享内存怎么实现?我说不知道,

面试官说我要问的问完了

能不能实习?能!

再见

面试官很好,但是我自己好菜啊、蓝瘦

#京东##面经##C++工程师##校招#
全部评论
udp可靠传输我这两天刚写完一个,五百多行,模拟的超时重传,滑动窗口
点赞 回复 分享
发布于 2019-07-25 20:59
第一个问题:个人理解,如果不用多态,还是不要加虚了,因为可能会使类体积变大,比如说32位下一个类本来只有一个int成员变量,占32位,加虚函数则变成64位,则体积翻成一倍。。而且构造函数不能加虚。 第二个问题:对于函数中返回动态分配的引用,是一个很不好的编程习惯。如果在函数体外不用引用来接受这个对象引用,则无法delete,凉凉。
点赞 回复 分享
发布于 2019-07-29 10:12
第一个问题找了一下答案: 为什么构造函数不能是虚函数? 从vptr角度解释  虚函数的调用是通过虚函数表来查找的,而虚函数表由类的实例化对象的vptr指针指向,该指针存放在对象的内部空间中,需要调用构造函数完成初始化。如果构造函数是虚函数,那么调用构造函数就需要去找vptr,但此时vptr还没有初始化! 从多态角度解释  1.虚函数主要是实现多态,在运行时才可以明确调用对象,根据传入的对象类型来调用函数;  2.构造函数是在创建对象时自己主动调用的,不可能通过父类的指针或者引用去调用,那使用虚函数也没有实际意义;  3.调用构造函数时还不能确定对象的真实类型(由于子类会调父类的构造函数);  4.构造函数的作用是提供初始化,在对象生命期仅仅运行一次,不是对象的动态行为,没有必要成为虚函数。
点赞 回复 分享
发布于 2019-07-25 21:13
什么岗
点赞 回复 分享
发布于 2019-07-25 19:31
什么岗鸭?
点赞 回复 分享
发布于 2019-07-25 19:33
**吸引了我
点赞 回复 分享
发布于 2019-07-25 21:00
哎,楼主什么时候投的?
点赞 回复 分享
发布于 2019-07-29 09:49

相关推荐

评论
2
31
分享
牛客网
牛客企业服务