诺瓦科技 软件工程师(c++)

软件工程师 (2020/8/9   17.40   40分钟)


自我介绍


项目中的难点?怎么去解决的?


Define 和inline的区别 //define不会做检查,直接替换,inline是函数,编译前会做检查的!!我没有回答对。。。 回答了表皮


如何判断浮点型,以前又看过,但是忘记了 啊啊啊啊

If((x>= -EPSINON)&& (x<=EPSINON))                     EPSINON是允许的误差(精度)



内存泄漏,以及内存泄漏的检测工具?给他说了一些例子和解决方案,然后还说了又工具可以解决,它问工具的底层是啥原理?我也不知道 。。。。


Unordered_map 和 map的区别?我说到了红黑树。。。然后 立马就来了 你知道红黑树是怎么实现的吗?


Const的用法? 我说的常量指针,指针常量 两个都是常量的情况


如何实现多态?我说的又静态多态和动态多态 、后面又问,拿它的原理是什么?我说了虚函数表,它立马就说,我就是想听这个


Struct class的区别?前者默认public,后者默认private(记忆小技巧:struct6个字,public也是6个字,class 5 个字,private7个字 哈哈 相等的相等哈)


操作系统的内存映射?我不是很懂。。。。


Win32的应用程序,开始进来就是main? 我没有回答上,但是知道前后是有操作的,这里给大家一个参考博客:https://blog.csdn.net/yangzhenzhen/article/details/9221973


参数初始化列表和定义数据的顺序关系?


网络编程相关的,问同步?异步,阻塞,非阻塞有没有用过,我说我只是基本的socket操作。


实现一个栈,我们应该实现那些方法? //push()  pop()  isempty()


写程序遇到栈溢出的情况? //递归函数


队列和栈的区别?


线程同步,我回答了线程间通信,不对,后面说不是很了解,过。。。


深拷贝和浅拷贝的区别


拷贝构造函数什么时候调用?  //我给他举例回答的


为什么又extern “C”          // 我刚开始说,是因为为了兼容c语言的语法,后面,工具不是很满意,我继续说,c的编译处理方式:int fun()   è  int_fun_    而c++的处理方式是:int fun (int int  )  è int_fun_int_int (注:这里是编译的时候,对函数的处理方式不一样,表明c,就是要告诉编译器,要以c的方式去编译,总的来说,就是解决名字匹配问题)


如何计算一个对象的大小?        //注意要考虑内存对齐,如果存在虚函数拿还得加上一个虚函数表的大小,


问我还有啥问的?我还是那句话,岗位的每天工作情况?团队怎么运行的,后面还访问了它,检测内存泄漏的工具原理是什么?它扑哧笑了,我可以给你简要介绍一下,具体细节原理了解就好。


总体感觉,面试官还是很友好,知道你不会,你说了之后,还是会跳过的,不会死磕,只是,它的麦不怎么好使,有点断续,它在家面试的

#面经##校招##诺瓦星云##C++工程师#
全部评论
楼主知道总共有几面嘛,这面过了还有几面
点赞 回复 分享
发布于 2020-08-10 17:20
那个main函数我之前好像看过,程序入口真正的好像是maincrtstartup,然后在这里面调用main并捕获返回值,调用main前后都有一段其他的处理程序
点赞 回复 分享
发布于 2020-08-10 09:13
楼主提前批还是正式批
点赞 回复 分享
发布于 2020-08-09 22:07
楼主你好,请问你是实习、校招还是社招?
点赞 回复 分享
发布于 2020-08-09 19:14

相关推荐

1&nbsp;自我介绍,实习经历介绍2&nbsp;堆和栈的区别?栈的数据结构?函数调用时栈怎么处理?函数调用的时候参数需要使用栈吗,什么时候用寄存器传递参数,什么时候用栈?3&nbsp;freertos了解过吗?进程调度底层如何实现的?关键代码段是什么?(这里贼坑,我学的时候那个叫临界区,他上来给我说了一个英语critcial&nbsp;section,我直接懵了)。如果os里面所有的任务都休眠了,此时cpu该怎么办?4&nbsp;linux内核了解过吗?linux内核进程调度策略?完全公平调度策略使用的数据结构?讲一下红黑树?它查找的时间复杂度是多少?还了解哪些关于查找的数据结构?讲一下哈希表如何实现?你觉得平衡二叉树和红黑树哪一个效率更高?5&nbsp;MMU原理?linux在用户态调用了malloc整个流程是什么?kmalloc和vmalloc的区别?你了解linux内存的管理吗,听说过动态映射区吗?你MMU填充的是几级页表,如何填充的?6&nbsp;了解过什么是内存碎片吗?如何避免内存碎片的产生?7&nbsp;字符设备的注册流程,你有接触过网络设备的开发吗?你说的那个napi结构体是什么?8&nbsp;阻塞IO和非阻塞IO的区别,如果我现在想是实现非阻塞打开某个设备,但是是阻塞的效果,该如何实现?9&nbsp;简历上写了了解pcie和AXI总线,分别讲一下呢?大致就是这些了,被拷打了40多分钟,有几个没回答上来,感觉上是寄了
查看9道真题和解析
点赞 评论 收藏
分享
一、&nbsp;开场及背景了解自我介绍:你可以简单地自我介绍一下吗?项目性质:所以这两个项目主要是你个人的练手项目,对吧?实习经历:中间有参加过什么其他公司的实习之类的吗?或者跟着导师/师兄做一些正式的项目?求职规划:为什么没有实习经历?是因为机会比较少,还是个人规划的原因?(面试官补充:因为计算机专业通常很看重实践经验,理论上机会也比较多)所以考虑实习这件事是比较晚的吗?同辈情况:你身边的同学(的求职/升学情况)呢?二、&nbsp;技术问题:计算机基础CPU缓存:CPU周围的L1,&nbsp;L2,&nbsp;L3这些多级缓存,它的主要作用或者意义是什么?因为这些缓存的存在,如何保证数据的一致性?CPU缓存(追问):既然第一次访问数据需要从主内存加载到各级缓存,这是否意味着第一次访问反而会更慢?缓存的“预读”(prefetching)机制是指什么?(面试官举例:我只想读一个变量,但它把一整块数据都读进来了,这是为了加速后续的访问吗?)并发与锁:在并发编程中,自旋锁和互斥锁分别适用于什么样的场景?并发与锁(结合项目追问):在你的实际项目中,有用到自旋锁的场景吗?可以举个例子吗?(针对你回答的动态选择策略)所以这是取决于你要更新的缓存数量,动态决策使用互斥锁还是自旋锁吗?你是这么实现的吗?你有对比过这两种策略(自旋锁&nbsp;vs&nbsp;互斥锁)的性能差异吗?比如,缓存数量达到多少或者耗时多长,你会切换策略?那你当时的策略具体是怎样的?比如说,更新多少个缓存的时候会采用自旋锁?三、&nbsp;技术问题:C++语言菱形继承:C++的多重继承会产生菱形继承问题,你可以描述一下这具体是个什么样的问题吗?采用虚继承的方式可以彻底解决这个问题吗?会不会带来任何其他问题?菱形继承(追问):如果我们继承的两个类(A和B),我们不确定它们背后是否有一个共同的基类,那是不是意味着最好总是采用虚继承的方式,以避免潜在问题?拷贝与移动构造:你了解C++的拷贝构造函数和C++11引入的移动构造函数吗?它们俩的差异和应用场景是什么?拷贝与移动构造(结合项目追问):在你实际的项目中也有使用过(移动构造/移动语义)吗?四、&nbsp;技术问题:网络协议TCP挥手:为什么TCP断开连接是四次挥手,而不是三次?TIME_WAIT状态:TCP主动关闭方在最后一次挥手后,为什么要进入一个TIME_WAIT状态并等待一段时间?TCP替代方案:TCP的TIME_WAIT机制会延长连接释放时间。现在有没有一些新的协议(比如QUIC)针对这一点做了优化,既能保证正常运行,又能有更好的连接释放性能?QUIC协议(追问):QUIC协议是如何做到在1-RTT(甚至0-RTT)就完成连接建立的?五、&nbsp;技术问题:数据结构与算法LRU缓存:你了解LRU(最近最少使用)缓存淘汰算法吗?请讲讲思路,如何实现一个高性能的LRU数据结构?(针对你的回答)链表部分你会采用单向链表还是双向链表?逻辑算法题(扔弹珠/鸡蛋问题):你面前有一栋100层的楼,你手上有两个完全一样的玻璃弹珠。从某个楼层往下扔,要么碎,要么不碎,且楼层越高越容易碎。现在要找到那个“刚好会碎”的临界楼层,你觉得怎么样能够最快地找到?(面试官补充:不碎的弹珠可以重复使用,碎了就没了)六、&nbsp;反问环节反问机会:我这里主要就这些问题了,你看看你有什么想要问或者想要了解的吗?
查看30道真题和解析
点赞 评论 收藏
分享
评论
2
22
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务