华为、美团、微软、字节、阿里研发校招编程测试题及答案参考





C++

1、面向对象的三大特性:封装、继承、多态

2、类的访问权限:private、protected、public

3、类的构造函数、析构函数、赋值函数、拷贝函数

4、移动构造函数与拷贝构造函数对比

5、深拷贝与浅拷贝的区别

6、空类有哪些函数?空类的大小?

7、内存分区:全局区、堆区、栈区、常量区、代码区

8、C++与C的区别

9、struct与class的区别

10、struct、union 内存对齐

11、new/delete与malloc/free的区别

12、内存泄露的情况分析

13、sizeof与strlen对比

14、指针与引用的区别

  • C语言的指针和引用和c++的有什么区别?

15、野指针产生与避免

16、多态:动态多态、静态多态

17、虚函数实现动态多态的原理、虚函数与纯虚函数的区别

18、继承时,父类的析构函数是否为虚函数?构造函数能不能为虚函数?为什么?

19、静态多态:重写、重载、模板

20、static关键字:修饰局部变量、全局变量、类中成员变量、类中成员函数

  • C 语言的关键字static和 C++ 的关键字static有什么区别

21、const关键字:修饰变量、指针、类对象、类中成员函数

22、extern关键字:修饰全局变量

23、volatile关键字:避免编译器指令优化

  • 一个参数可以既是const又是volatile吗

24、四种类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

25、C++11 部分新特性,比如右值引用、完美转发等

  • 什么是右值引用,跟左值又有什么区别?

  • 完美转发

26、std::move函数

27、四种智能指针及底层实现:auto_ptr、unique_ptr、shared_ptr、weak_ptr

28、shared_ptr中的循环引用怎么解决?(weak_ptr)

29、vector与list比较

  • vector的底层原理
  • list的底层原理
  • vector中的reserve和resize的区别
  • vector中的size和capacity的区别
  • vector中erase方法与algorithn中的remove方法区别
  • 正确释放vector的内存(clear(), swap(), shrink_to_fit())
  • vector迭代器失效的情况
  • 什么情况下用vector,什么情况下用list,什么情况下用 deque

30、priority_queue的底层原理

31、STL部分容器的实现原理,如 vector、deque、map、hashmap、set、list

  • map与unordered_map对比
  • set\map机制
  • map 、set、multiset、multimap的底层原理
  • map 、set、multiset、multimap的特点
  • 为何map和set的插入删除效率比其他序列容器高
  • 为何map和set每次Insert之后,以前保存的iterator不会失效?
  • 当数据元素增多时(从 10000 到 20000),map的set的查找速度会怎样变化?
  • 为何map和set的插入删除效率比其他序列容器高,而且每次insert 之后,以前保存的iter
  • 为何map和set不能像vector一样有个reserve函数来预分配数据?
  • set的底层实现实现为什么不用哈希表而使用红黑树?
  • hash_map与map的区别?什么时候用hash_map,什么时候用map?

32、set与unordered_set对比

33、STL容器空间配置器

34、变量的声明和定义有什么区别

35、简述strcpy、sprintf与memcpy的区别

36、请解析(*(void (*)( ) )0)( )的含义

37、设置地址为0x67a9的整型变量的值为0xaa66

38、简述指针常量与常量指针的区别

39、请你来说一下 C++ 中struct和class的区别

40、简述#ifdef、#else、#endif和#ifndef的作用

41、typedef和define有什么区别

  • 写一个 “标准”宏MIN

42、写出int 、bool、 float、指针变量与 “零值”比较的if语句

43、结构体可以直接赋值吗

44、谈谈你对拷贝构造函数和赋值运算符的认识

45、sizeof和strlen的区别

46、关键字 override

  • 简述类成员函数的重写、重载和隐藏的区别

47、C++ 自己实现一个String类

48、用两个栈实现一个队列的功能

49、高级数据结构

  • 红黑树
  • B B+树

50、编译链接机制、内存布局(memory layout)、对象模型


💻 操作系统

1、进程与线程区别

2、线程同步的方式:互斥锁、自旋锁、读写锁、条件变量

3、互斥锁与自旋锁的底层区别

4、孤儿进程与僵尸进程

5、死锁及避免

6、多线程与多进程比较

7、进程间通信:PIPE、FIFO、消息队列、信号量、共享内存、socket

8、管道与消息队列对比

9、fork进程的底层:读时共享,写时复制

10、线程上下文切换的流程

11、进程上下文切换的流程

12、进程的调度算法

13、阻塞IO与非阻塞IO

14、同步与异步的概念

15、静态链接与动态链接的过程

16、虚拟内存概念(非常重要)

17、MMU地址翻译的具体流程

18、缺页处理过程

19、缺页置换算法:最久未使用算法、先进先出算法、最佳置换算法


网络编程

Linux 下网络编程核心的包括系统编程网络 IO 两个部分:

1、进程间通信方式:信号量、管道、共享内存、socket 等

2、多线程编程:互斥锁、条件变量、读写锁、线程池等

3、五大 IO 模型:同步、异步、阻塞、非阻塞、信号驱动 区别/联系

4、线程池

5、高性能 IO 两种模式:Reactor 和 Proactor( 但是 Linux 下由于缺少异步 IO 支持,基本没有 Proactor)

6、IO多路复用:select、poll、epoll的区别(非常重要,几乎必问,回答得越底层越好,要会使用)

7、手撕一个最简单的server端服务器(socket、bind、listen、accept这四个API一定要非常熟练)

8、边沿触发与水平触发的区别




#面经##学习路径#
全部评论

相关推荐

11-06 12:53
吉林大学 Java
如题,ip属地末九,计算机科班大三本科生。想找一段寒假实习,也是第一次找实习。 从大二暑假7月开始准备Java后端,前期有点磨叽,导致现在手忙脚乱。目前第二个项目黑马点评快写完了,第一个项目是苍穹外卖(两个项目都是烂大街的,这就很头大)。算法题在lc上从大二至今陆续刷了将近六百题,hot100已过一遍,面试150目前刷了一半。八股刚看了不到一周,想请教一下各位牛友,这一版简历哪些地方需要继续改进,接着优化? 同时,是现在立即开始投递,边投边背八股,完善项目。还是说八股再背个小半个月再开始投递比较好一点,我现在担心的是到了这个月下旬或者12月再开始投递简历面试会有点晚,听同学说到年底hc数量会大...
mikeu04:简历顶部留名字即可,你写“后端开发实习生-Java”就是把自己的方向限制死了。我建议把这揉在个人简介里,说你对后端开发充满热情就行。性别出生年份以及微信号不是必须的。 把个人简介从教育背景里拿出来,第一个写。你的个人简介有点太泛了。把“爱好中长跑”去了,加点数字(“拥有xxx年的xxx经历”),加点你最熟的几个语言或技术栈。和别人的简介区分开来。 专业技能放项目经历前面。面试官一般会优先看这个再往下看你做了什么项目来考察你是否具备这些技能。实习我不是很清楚,但像Redis, JVM, 消息模型,计算机网络这些属于基本知识。你如果了解GCP, AWS, Docker 这些实际生产工具就可以把八股知识换掉。 项目简介可以和工作内容揉在一起。项目简介还是太长了,就一句话,“开发了一个基于【1,2个主要框架】为【目标客户群体】的【产品类型】, 实现了【产品价值】”。产品价值不是功能。比如一个在线计算器,它的功能是算数,但它的价值可以是让人在没带计算器的情况下算数(可访问性)或比手算效率提升了80%。工作内容多加点数字,你这个产品有多少人用了?浏览量是多少?技术上xxx性能提升了多少%?(实在想不出来就丢给deepseek :) 11 月理论上秋招已经结束了。八股是背不完的。无脑投,刷笔试,中了面试邀请就突击面经八股,没问题的。
大厂面试问八股多还是项目...
点赞 评论 收藏
分享
青春运维少年不会梦到...:实习大王
点赞 评论 收藏
分享
迷茫的大四🐶:好一个误闯天家,我也想闯一闯
点赞 评论 收藏
分享
评论
2
33
分享

创作者周榜

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