当前位置: 首页 > 面试经验 >

复睿智行C++软件开发实习面试凉经

优质
小牛编辑
155浏览
2023-03-28

复睿智行C++软件开发实习面试凉经

线上面试,HR和一位技术的面试官


自我介绍


现在研究生学习的方向是什么?


大数据分析这一块有做过吗?


有了解过现在区块链整个架构体系是什么样的呢?(因为我回答学习方向是区块链)


在区块链这块有没有接触过云计算的体系结构


我:不知道


有没有自己动手尝试做过一些系统或者是编写过一些具体代码的东西呢?



这个项目的框架总结还是要单独总结出来讲稿,因为讲和写区别还是很大的。



有没有考虑过采用无锁的方式处理线程以及任务的调度?


我:有学过,但是忘记了,没复习,这个地方确实是可以改进的点。


有没有听过一个分扇区的方法cluster可以解决高并发对于任务分配的调度。因为你的任务和线程是1:n的关系 ,所以在调度之后可以通过cluster的隔离来分组,来实现线程高效的复用以及调度,这个有没有了解过?


我:没有了解过。


面试官:因为你的任务和线程是1:n的关系(多个线程争抢一个任务),线程现在还没有考虑它的优先级,所以我们对线程分扇区去处理,就是分cluster去处理。因为有执行能力高和执行能力的线程所以任务调度是不一样的,这样的话,我的任务就会出现请求和投递的过程,这样就能解决扇区内能够做无锁的操作,这样你的任务也就不需要上锁再读取。如果你的任务多线程少,那么加锁没有问题。但是如果你的任务少线程多,此时加锁就会导致效率很低。


在C++的学习过程中,你自己一直是在从事C++的编写工作吗?


我:是的,之前实习的时候是用QT的,然后后面写服务器代码的时候,也有用到C++11的相关新特性。


能讲一下C++中是怎样运用面向对象技术的呢?以及它里面和面向对象技术之间的冲突点有没有自己的一些感悟?



注:我回答偏了,重点应该是落在面向对象技术,类怎么设计,我给答到C++新特性这方面去了,后面面试官也有和我提到这个问题。



面向对象既然是一个程序设计思想它有几个基本特性封装继承和多态,先简单说一下封装,既然是面向对象,那什么是对象。


我们封装是封装一个类还是一个对象?


类是一个抽象的概念,具有相同属性行为或者操作的对象的一个集合,是一堆实例的集合。通过实例抽象出来的一个类,怎么区分不同类的区别?


我:通过功能上来进行区分,比如http请求类和线程池的类

面试官:这里有点问题,你通过面向对象思想设计一个程序,可能通过对象的思维去做的。如你刚刚所说的http是一个类,那么如果我做的是ws呢,那我不是又要写一个ws(websocket)的类,这肯定是不好的。

**类是多个具有相同属性和相似操作的控制数据的集合。**类与类之间区分就是通过属性来分界的,比如说人和动物为什么分成不同的类呢,但是它们有一个总类,除了属性以外,每一个类都有相似的行为,这个行为也是区分的参考标准之一。而在我们对类进行区分的时候不仅仅是依赖于属性和行为。有时我们对于某个实例情况来分解的时候,有的时候是以行为为主,有的时候是以属性为主。

对于这些基本概念的话你可能后面需要去了解一下,因为我们长期用C++的话,你最后写出来的代码可能会有大量的重复或者逻辑条理不清晰的问题。

(hr问) 是哪里人?


(hr问) 我们这个地点上是成都,你地点上面能接受吗?


(hr问) 你对于你自己的职业规划怎么考虑?


(hr问) 我看你本科是通信,硕士是计算机,这是你自己选择的吗?


(hr问) 本科绩点怎么样?


(hr问)我看你有一段实习经历,这段实习经历对于你最大的收获是什么?


(hr问)你的导师对你的评价怎么样?


(hr)你在接下来的时间有打算有针对性的做过一些练习或者是补充吗?


(hr)后面能实习多久呢?


3-6个月



反问


如果有机会能获得实习机会,具体做的是哪一块的内容呢?需要掌握那些技术呢?


面试官:可能你现在还是学生,编程语言对于你们来说还是一个入门的东西,对于实际工作中只是一个工具.工具就是指针对我们不同的行业以及不同的技术应用方向我们选择对应的技术栈,像如果做机器人那么会使用ROS 系统 和 C++。像我们做自动驾驶,边缘计算平台这些C++用的比较多;但是像如果数学应用则matlab用的多一些。但是如果做敏捷开发那么JAVA、C#用的多一些,它其实没有固定的技术方向,所有的这些语言都只是提供给你的一个工具,工具只是为了解决问题。我们更多还是在边缘计算、分布式架构体系、高并发应用程序多一些,我们C++用的多一些,但我们做边缘计算,我们可能用go语言。
你这边可能更需要关注对于事物的整体认知。从研究生开始,可能大部分的工作都是学习怎么样去提升我们对这个世界的认知以及我们怎么训练自己的抽象能力。你作为研究生,所以我们对你的面向对象程序设计思想有要求,目的也是为了想要了解你想在对于系统结构体系的认知水平以及你怎么看待事物的方法和思维。




  1. 我想了解一下刚刚面试下来我有哪些不足呢,以及能否请您给我提一些改进的建议吗?


    可以先在决定方向上去看一看,比如我自己要做哪个方向,然后在这个方向上去选择对应的技术,了解完这个技术之后,考虑可以用什么工具来解决我所要去面对的问题。应该是分三层去考虑,而不是我先决定我要用C语言,然后我要用C语言去做什么,这样你看到的范围就会相对较窄。这个最好是反的。因为在我们现有的系统中都是属于互联网、物联网这样的时代,我们要去了解这么一个体系,以及我们去面对产品化的东西,都不是一个孤岛,大部分都是一个相互有交互的,是一个网状的体系结构。怎么去抽象出这些体系结构才是你后面要去深入理解,如果你不理解它,你就会仅仅只限于语言本身给你带来的一点进步的过程,这个过程是没有办法应付你后期的成长需要的。




反思:



  1. 整体面试体验还是很好的,面试官提出了有建设性的改进建议,就是因为自己学的内容还浮于表面,一挖就捉襟见肘了。

  2. 对于项目的架构以及执行流程介绍,要总结出一个10-15分钟的讲稿,然后反复练习;

  3. 面试还是要背诵一些东西不然难搞

  4. 还是紧张,导致本来水平就不好,更加减分了;

  5. 讲话还是总是嘶嘶嘶,这个坏毛病要改掉;

  6. 面了两家公司,都很爱问面向对象这一块的内容,应该要去学习一下。

#C++##面试体验##实习#
 类似资料: