CVTEC/C++研发实习面试(凉)-创新互联
在线测试的主要内容就是20道选择题和两道编程题。
专注于为中小企业提供成都做网站、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业长兴免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。选择题就是一些八股文,具体记不清了。反正对面试影响不大。
两道编程题是:
- 求给定一个数组经过降序排序之后,前30%中最小的数。
- 给一组IP vector ips,求子网掩码的大长度。
面试官是一个小哥,听声音比较温和,
注:开面之前假装调摄像头,先把iwatch录音开启来。
- 自我介绍
答:我叫xxx,来自xxx,在德国克莱登大学计算机专业读研二。我自己目标的方向是CC++Linux后台开发方向,我对这个方向所需要用到的理论知识有一定的了解。 比如数据结构,如队列、栈链表、还有一些别的算法,比如回溯、动态规划等。还有IO多路复用的知识,比如select、poll、epoll以及在它们之上进行封装的Reactor和Proactor?这里C/C++说自己只是了解(有点不够自信),学习的时候习惯将学到的重要知识点总结成笔记,然后业余爱好的话,我每天坚持跑步5km,然后平时喜欢读一些书。现在在学RPC这方面的内容,想把之前的项目扩充 ,把httpserver扩充用到数据库之类的中间件。
reactor是对epoll的一层封装 ,epoll是对io进行管理,reactor将对io的管理转化为对事件的管理。
应该要说能够熟练掌握C/C++基本语法与应用,放介绍的前面说比较合适,
- 看你简历上说你有一次实习经历,你的收获是什么?
答:做的事情相对比较简单,因为算是第一次实习,之前也有实习过,但是是测试,这次实习至少能看到一些软件开发流程,导师有分配一些解bug的任务。然后这次实习主要是与QT相关。主要是能够接触到它们的代码的语法风格。有些问题看起来很简单,但是做的时候没法下手,然后导师指导后,也就是用到常用的封装的方法,不应该这么说应该具体是说面向对象的方法,比如说继承。。。
打日志很重要。(中间又是一大堆嘶嘶嘶嘶嘶嘶)。
- 在实习中你有了解过软件开发的生命周期是怎么样的呢?
答:忘记了,答的支支吾吾
- 你在实习的时候有解决过什么bug吗,有没有学到或者是有没有一些解决问题的心得方法?
答:这里已经慌了。语无伦次了,
先找到出现问题的大概位置,阅读上下文代码,了解类的封装情况,代码的执行情况,根据这个来修改,增添新类不是很敢做。
- 有学过一些设计模式吗?
答:这个只记起来单例模式,别的一时间脑子一片空白。
- 类的封装或设计上你有没有什么设计思想或者是一些指导思想?
答了一些屏蔽属性,只提供给用户有限的使用接口,反正也是答的不好
- 我看你写了一个web服务器项目,有用到哪些开源组件吗
回答:目前没有,只用到了epoll
- 你能介绍一下你的这个项目整体设计是什么样的?分了几个线程或者是线程,每个线程职责是什么?或者说从类的分工上分了几个层次或者框架,你能简单介绍一下你的这个程序的设计吗?
答:开始不知道为什么笑起来了???说的乱七八糟???
搞的面试官再次提问,你这个项目的工作流程是什么样子的呢?先给我介绍一下大概的结构是什么样子,然后再介绍进程和线程都是做什么用的,这样我比较好的了解你这个项目的全貌。
明明这方面项目看了好多
- 你这个项目用的是get方法来获取资源 ,你这个程序是只能下载不能上传的吗?
答:目前没有做这个功能
- 那么如果下载的是一个大文件,有没有支持断点续传功能呢?
答:这个不了解,没做过。
- 你这里用到了get请求,有没有了解过http请求的一个效率问题呢?get请求和post请求数据量一致的情况下哪一个效率会更高一点呢,为什么?
答:不知道,答不上来,我说没差别。。
- 你这里epoll选择的是ET、还是LT为什么?
答:ET、因为我请求的都是小文件,基本几次数据就到了,所以只要缓冲区第一次有数据到来才触发就够了。
- 都说epoll比select和poll高效,那么高效的原因是什么?
答:说了一下区别,select和poll每次都要设置监听fd的集合,而epoll不需要,而且epoll事件是存在一个红黑树。所以效率更高。感觉不行
- 你这个程序的话,是一个web服务器,那现在我们发散一下,改成一个CDN服务器,就像我们现在用的视频会议工具有个视频流传输,要做到实时级别视频级别的服务器的话,底层就传输层协议可能不用TCP实现,而是用UDP实现,因为我们都知道UDP实时性能要高一点。现在场景是传输层我用UDP实现,但应用层协议我还没敲定,我的要求是能够有一个更好的可靠性,如果既要保证实时性又要保证可靠性的话,你会怎么去实现呢?
答:TCP是依靠序号机制和三次握手来实现数据包不丢失不乱序,那么传输层UDP时在应用层发送数据时加上序号。
- 你是否有了解过满足我刚刚说的要求的应用层协议呢?
答:QUIC,具体细节忘记了
- 你刚刚提到有用到线程池,那么你有了解过线程池的线程数初始值根据什么来决定。
答:(不会)根据并发数来确定初始值。
- 那你有测过你的webserver的并发数吗?
答:瞎扯之前百万并发的实验,就说通过调大内存和大文件描述符打开数量,调小读写缓冲区,能到80w连接。
面试官说那就是要好好系统性的梳理一下原因
- 在STL你会用到哪些容器呢?
答:vector、set、map详细讲一下
- 你刚刚说到vector中动态扩容,那为什么是1.5倍或者是2倍?
答:不知道。。。。
- map查找上是什么样的复杂度?
答:Olog2N
- 你在做算法题或者项目功能时,有什么调试方法保证运行逻辑和你预期是一致的?
答:主要是打输出,gdb中打断点。
- 你有了解过程序崩溃的时候,应该怎么去排查呢?
答:我回答内存泄漏、边界问题,在资源分配和数据流动代码附件加断点或打输出。
- 你刚刚提到内存泄漏,那C++上有提供了一些好用的方法来解决这个问题,比如智能指针,你有了解过或用过吗?
答:介绍了unique、shared、weak类型的shared_pointer,循环引用问题。
- 你对自己学习规划有什么想法吗?
答:刚刚面试完发现自己网络部分薄弱,还要加强。把前面的知识复习到位,然后要多动手,并发编程这一块也要加强学习一下,同时redis mysql也想应用于自己的项目中。
- 如果有机会到贵公司实习,主要工作是什么呢?
我们这是一个集团,旗下有很多子公司,有很多业务,像C++应用场景基本都覆盖了,像客户端开发,嵌入式开发,后台服务,比如这款通信会议软件后台就是用C++来实现的。还有就是研究院的一些算法工程落地,具体可以到官网看有哪些领域
- 我想走后端开发应该要注重哪些方面学习,或者说刚刚面试下来我有哪些不足呢?
从C++这边看,你刚刚这边也掌握的不是很清楚。就从一个研发人员的气质上来讲,刨根问底这方面还不够,应该有一些追求,思维方式上要有一些转变,对知识应该要有更深入的了解。
第二,就是要有系统的思维方式,你做的事情都是点状的方式,像你想要做一个服务器,你都是从点上去发散,比如你想做个一个epoll,有一个线程池。没有能够从系统上去思考项目体现什么,使功能更丰富,比如你刚刚说的加入数据库这些。
至于基础的话努力都是可以补回来的,问题不大。
讲话有点慌张,总好像一直在笑,应该还是要稳一点,偶尔微笑可以;
语气呼吸优点不流畅,不要思思思思;
不够自信,总是想收回自己的话;
理论知识和实践都需要提高,对于项目介绍的准备还不够充分;
面试官人还是很好的,会一步一步循序渐进的提问,并且比较有耐心,最后也给出了比较中肯的评价,虽然这次面试挂了,但是收获上来说还是比较大的,比较换位思考,如果我是面试官,我也会把自己给挂了。~~
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站题目:CVTEC/C++研发实习面试(凉)-创新互联
分享链接:http://pwwzsj.com/article/shdgg.html