研发工程师(C/C++)面试问答题集锦

本文深入探讨了C++中的多态、抽象类等关键概念,解释了虚函数的实现机制及对象大小,同时覆盖了static关键字的作用、new与malloc的区别等主题。此外,还讨论了C++中的不同数据存储区及其用途,以及栈溢出的现象和原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++

什么是多态?

多态可以用来做什么?

虚函数的实现机制?一个空的对象(包含虚函数的类的对象)占几个字节?(32位和64位机器分别是多少?)

什么是抽象类?

抽象类的作用是什么?

抽象类(abstract class)的主要目的是为它的子类定义公共接口。一个抽象类将它的部分或全部操作的实现延迟到子类中,因此,一个抽象类不能被实例化。(——引自《设计模式:可复用面向对象软件的基础》P11)

static关键词起什么作用?

new和malloc的区别?

C++中有哪几种数据存储区?

堆区存放什么?栈区存放什么?

什么是栈溢出?哪些情况下比较容易出现栈溢出?

“#include”后面跟引号与尖括号的区别?

你了解哪些编译器?

G++:如何编译一个文件?

gdb?

STL

vector内存管理方式?

list执行erase之后迭代器指向谁?

map和hash_map的内部实现原理?哪个效率高?

解决哈希冲突有哪些方法?

  1. 开放定址法
    (1). 线性探测法
    (2). 平方探测法
    (3). 随机探测法
  2. 链地址法
  3. 公共溢出法

什么情况下适合用map,什么情况下适合用hash_map?

hash_map的不稳定性表现在哪?

当hash_map的大小合适,并且计算算法合适的情况下,hash表的算法复杂度为O(1)的,但是这是理想的情况下的,如果hash表的关键字计算与表位置存在冲突,那么最坏的复杂度为O(n)。 map在一次查找中,你可以断定它最坏的情况下其复杂度不会超过O(log2N)。而hash表就不一样,是O(1),还是O(N),或者在其之间,你并不能把握。

数据结构

算法

主要以算法题的形式出现。

多线程编程

多线程编程需要注意哪些问题?

操作系统

sleep与wait的区别

http://www.cnblogs.com/plmnko/archive/2010/10/15/1851854.html

编译原理

动态编译与静态编译的区别?

http://blog.youkuaiyun.com/wuan584974722/article/details/7953213

计算机网络

TCP与UDP的区别?

TCP建立连接需要经过几次握手?过程是怎样的?释放连接需要经过几次挥手?过程是怎样的?

TCP中的timewait状态是怎么产生的?

为什么TCP叫做数据的“流”传输,而UDP叫做“报文”的传输?

GET和POST的区别?

用什么命令查看域名对应的IP地址?

nslookup

Linux

查看进程的两种命令?

如何设置定时任务?

/proc路径是做什么用的?

数据库

MySQL如何选择引擎?

MySQL有哪几种索引方式?

写SQL语句:查找两个表中都存在的QQ号?

### 2018年网易校园招聘C++职位要求 对于2018年的网易校园招聘,针对C++开发岗位的要求主要集中在以下几个方面: - **编程能力**:熟练掌握C++语言特性及其标准库的应用。能够编写高效、可维护的代码[^1]。 - **数据结构算法基础**:具备扎实的数据结构(如数组、链表、栈、队列、树等)以及常见算法(排序、查找、图论等)的知识背景。 - **操作系统理解**:熟悉进程管理、内存分配机制;了解Linux环境下的基本操作命令及脚本编写技巧。 - **网络编程技能**:掌握TCP/IP协议族的工作原理,有Socket编程的实际经验者优先考虑。 - **并发处理技术**:具有多线程程序设计的经验,懂得如何利用锁机制解决竞争条件等问题。 - **数据库交互**:会使用SQL语句完成增删改查操作,并且有一定的ORM框架应用经历。 - **其他加分项**:参过高性能服务器端软件的研发工作,特别是那些涉及到大规模分布式系统的项目案例将会成为一大亮点[^4]。 ### 技能测试环节概述 在技能测评阶段,候选人通常会被安排在线上平台解答一系列关于计算机科学基础知识的选择题和技术问答题。这些题目旨在考察应聘者的理论素养和实际动手解决问题的能力。具体来说可能包括但不限于以下几类考点: #### 编程实践部分 通过给定特定场景描述或功能需求,要求考生限时提交一段完整的C++源代码片段来满足指定的任务目标。这不仅考验了个人编码水平高低同时也反映了其逻辑思维模式是否清晰严谨。 #### 笔试题型举例 ```cpp // 示例:计算斐波那契数列第n项值 int fibonacci(int n){ if(n<=1)return n; int a=0,b=1,c; while(--n>0){ c=a+b;a=b;b=c; } return b; } ``` ### 面试流程回顾 整个面试过程分为多个轮次逐步推进,每一轮侧重点有所不同但均围绕着候选人的专业知识体系和个人综合素质展开评估分析。 #### 初面——技术专项考核 由资深工程师主持对话交流活动,期间除了常规性的自我介绍之外还会就一些较为复杂的技术话题进行探讨研究。比如询问有关STL容器内部实现细节或者是模板元编程方面的见解看法等等。 #### 复面——综合能力评测 此阶段更加注重考查求职者面对真实业务挑战时所展现出来的解决方案构思能力和团队协作精神面貌。因此可能会被邀请分享过往成功克服困难的经历故事并接受考官们针对性提问质疑。 #### 终审——人力资源洽谈 最后则是HR主导的最后一关审核确认环节,在这里主要是为了进一步核实个人信息真实性的同时也给予双方更多机会相互了解彼此的文化价值观取向从而判断是否存在长期合作发展的可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值