2019春招CVTE一面(C++)

1.两个线程什么情况会出现死锁
2.单链表反转
3.一个100循环的数据处理,由两个线程执行,和一个线程执行,哪个更快?(一个)
4.一堆内存碎片。此时要分配一个大空间。可以分配吗(内存碎片加起来的空间大于要申请的空间)
5.new和malloc底层实现和区别

6.堆和栈的区别?
1)分配和管理方式不同 :
堆是动态分配的,其空间的分配和释放都由程序员控制。
栈由编译器自动管理。栈有两种分配方式:静态分配和动态分配。静态分配由编译器完成,比如局部变量的分配。动态分配由alloca()函数进行分配,但是栈的动态分配和堆是不同的,它的动态分配是由编译器进行释放,无须手工控制。
2)产生碎片不同
对堆来说,频繁的new/delete或者malloc/free势必会造成内存空间的不连续,造成大量的碎片,使程序效率降低。
对栈而言,则不存在碎片问题,因为栈是先进后出的队列,永远不可能有一个内存块从栈中间弹出。
3)生长方向不同
堆是向着内存地址增加的方向增长的,从内存的低地址向高地址方向增长。
栈是向着内存地址减小的方向增长,由内存的高地址向低地址方向增长。

7.vector扩容(忘了说释放原来的空间,还是面试官提醒的,唉)
8.大端模式和小端模式的判断(联合体)
9.多个 100w字符以上的字符串,找相同的字符
10.描述TCP的三次握手,可不可以两次
11.TCP与UDP的区别
12.浅拷贝与深拷贝
13.散列表的冲突问题,大量冲突回出现什么问题(性能下降,重写散列函数)

答得很零碎。。。应该是凉凉了。。。(2019.3.16)
#广州视源电子科技股份有限公司##春招##面经##C++工程师#
全部评论
第4题。内存碎片是可以自动整理是么?
点赞 回复
分享
发布于 2019-03-17 01:53
第九题怎么做?
点赞 回复
分享
发布于 2019-03-17 18:26
博乐游戏
校招火热招聘中
官网直投

相关推荐

3 38 评论
分享
牛客网
牛客企业服务