秋招后台开发C++

面试过程

8月12号十点半开始面试,面试平台是牛客网,远程面试。面试官非常亲切,先是介绍了一下部门,以及岗位相关信息,确定自己的意向岗位,再下来就是自我介绍,在每个环节中都是以商量的口吻来提问。一面没有问项目,基本都是基础知识,下面就我自己记得的问题做一下记录:

Linux相关知识

1、了解Linux常用的命令有哪些?(拷贝、删除、移动、vi、ftp等等、查看共享内存……)
2、了解top命令和free命令吗?说一下你记得的一些字段(自己很少用,就再没有问了)
3、多线程中,为什么要用共享内存进行通信?在堆上自己申请的空间和共享内存有什么区别?二者的使用场景有哪些?(这个扯了一堆我对共享内存的理解,但是对于二者的区别,确实不知道怎么答,就没有再问了)
4、进程和线程的区别
5、多进程的通信方式有哪些?(管道、消息队列、共享内存、socket等)系统重启后,哪种方式不会丢失数据?(自己分析了一下,应该是有名管道不会丢失,其他方式都会丢失)
6、有没有用过socket编程?说一下服务端的基本操作流程?(我刚初学Linux的时候写过这些程序,现在记得不是很清楚了,就大概回顾了一下,创建socket、监听、接收、通信,比较模糊。顺便说了一下客户端的操作)

C++基础知识

1、解释一下C++的继承、多态、重写、重载的概念。(重写当时有点懵,没有讲的很清楚)
2、多态是怎么实现的?了解虚函数表吗?父类和子类的虚函数在虚函数表中的先后顺序是怎样的?(形式上增加virtual关键字、子类进行重写。实际调用是通过虚指针动态绑定确定调用虚函数表中的哪个函数,父类虚函数在前,子类在后,在继承的时候,子类会复制基类的虚函数表)
3、重载函数是怎么实现?函数返回值不同能重载吗?(仅有函数返回值类型不同,是不能重载的,只有参数列表不一样时,才能重载)
4、了解STL吗?自己用的比较多的容器有哪些?(讲了一下vector、map、set)
5、讲一下vector你了解的知识?(主要是底层实现,动态扩容)动态扩容的过程是怎么样的?(申请新空间,拷贝原有数据,释放原有空间)
6、vector动态扩容时可以在原来的空间后面继续申请空间吗?为什么?(不能,只能申请比原来大的新空间)
7、讲一下vector和list异同?使用时如何选择?(主要从底层实现的数据结构,插入、删除、访问的效率来解释)
8、了解map底层实现吗?map和hash_map的区别?(map底层是红黑数实现,hash_map是使用哈希表实现的)
9、map和hash_map使用时如何选择?hash_map如何解决哈希冲突问题?(也主要是从效率来解释,哈希冲突有一种比较简单的方式就是再哈希)
10、map的大小怎么统计?实际项目中选择数据结构的时候有考虑占用内存大小的问题吗?(这个问题被问懵了,直接说没有遇到过。。。)

网络通信相关知识

1、解释一下TCP/UDP的异同?(有无连接、可靠性、速度等方面来对比分析)
2、TCP三次握手和四次挥手过程?(解释一下连接和挥手过程)
3、为什么握手需要三次,挥手需要四次?
4、TCP怎样保证可靠性?
5、TCP和UDP包的大小?怎样理解TCP是一种流式协议?
6、为什么音频或者视频通话要用UDP协议?

手撕代码

题目:写一个String类,实现  带参构造函数,拷贝构造函数,析构函数,‘=’运算符重载函数。(面试官坐着看我手撕代码,确实挺紧张的,还好很快写出来了)

代码中给指针分配的空间的时候用了new关键字,面试官问如果new失败了怎么办?什么情况下会new失败?失败之后会抛出异常吗?(抛出异常这个我真不知道,就说不清楚)

反问环节

问了面试流程,然后了解了一些内部业务主要用什么语言,具体做些什么工作?
然后,面试就愉快的结束了,差不多面了1小时20分钟吧!
自己感觉发挥的不好,估计一面肯定凉了。任重道远,继续努力吧!各位加油...




#面经##腾讯##C++工程师##校招#
全部评论
楼主加油!
点赞 回复
分享
发布于 2020-08-12 19:06
加油加油!
点赞 回复
分享
发布于 2020-08-12 19:12
小红书
校招火热招聘中
官网直投
楼主加油!
点赞 回复
分享
发布于 2020-08-12 20:05

相关推荐

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