• C++后台开发面试考点汇总


      以下不作为C++学习路径,只是汇总的校招C++后台开发面试考点(因为还有笔试考点,后面结合在一起给大家学习路径),后续会为大家更新10w+字数的C++校招面试题库,还有其他岗位的相关题库和资料,想要什么岗位的可以留言哦~

    本篇根据各个公司的面试问的问题的大数据进行总结,后面还会更新面试中考察所占比例,当然,本文只包括技术面,不包括hr面或者一些其他谈人生理想的

    附题目:

    一、基础知识

    1、基本语言

    1、说一下**static关键字的作用**

    2、说一下C++和C的区别

    3、说一下C++中static关键字的作用

    4、请说一下static的作用

    5、说一说c++中四种cast转换

    6. 请说一下C/C++ 中指针和引用的区别?

    7、给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码

    8、怎么判断一个数是二的倍数,怎么求一个数中有几个1说一下你的思路并手写代码

    9、请你说一下你理解的c++中的smart pointer四个智能指针:

    10、请回答一下数组和指针的区别

    11、请你回答一下野指针是什么?

    12、请你介绍一下C++中的智能指针

    13、请你回答一下**智能指针有没有内存泄露的情况

    14、请你来说一下**智能指针的内存泄漏如何解决

    15、请你理解的c++中的**引用和指针

    16、请你来说一下C++中的**智能指针

    17、请你回答一下为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数

    18请你来说一下函数指针

    19请你来说一下**fork函数

    20请你来说一下C++中析构函数的作用**

    21、请你来说一下静态函数和虚函数的区别

    22、请你来说一说重载和覆盖

    23、请你来说一说static关键字

    24.、请你说一说strcpy和strlen

    25、请你说一说你理解的虚函数和多态

    26、请你来回答一下++i和i++的区别

    27、请你来说一说++i和i++的实现

    28、请你来写个函数在main函数执行前先运行

    29、有段代码写成了下边这样,如果在只修改一个字符的前提下,使代码输出20个hello?

    30、请你来说一下智能指针shared_ptr的实现

    31、以下四行代码的区别是什么?

    32、请你来说一下C++里是怎么定义常量的?常量存放在内存的哪个位置?

    33、请你来回答一下const修饰成员函数的目的是什么?

    34、如果同时定义了两个函数,一个带const,一个不带,会有问题吗?

    35、请你来说一说隐式类型转换

    36、说说你了解的类型转换

    37、请你来说一说C++函数栈空间的最大值

    38、请你来说一说extern“C”

    39、请你回答一下new/delete与malloc/free的区别是什么

    40、请你说说你了解的RTTI

    41、请你说说虚函数表具体是怎样实现运行时多态的?

    42、请你说说C语言是怎么进行函数调用的?

    43、请你说说C语言参数压栈顺序?

    44、请你说说C++如何处理返回值?

    45、请你回答一下C++中拷贝赋值函数的形参能否进行值传递?

    46、请你回答一下malloc与new区别

    47、请你说一说select

    48、请你说说fork,wait,exec函数

    49、请你回答一下静态函数和虚函数的区别

    50、请你说一说重载和覆盖

    51、请你说一说static关键字

    52、请你说一说strcpy和strlen

    2、容器和算法

    1、请你来说一下map和set有什么区别,分别又是怎么实现的

    2、请你来介绍一下STL的allocaotr

    3、请你来说一说STL迭代器删除元素

    4、请你说一说STL中MAP数据存放形式

    5、请你讲讲STL有什么基本组成

    6、请你说说STL中map与unordered_map

    7请你说一说vector和list的区别,应用,越详细越好**

    8请你来说一下STL中迭代器的作用,有指针为何还要迭代器**

    9、请你说一说epoll原理

    10、请你说一说STL迭代器是怎么删除元素的呢

    11、请你说一说STL中MAP数据存放形式

    12、n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(N)

    13、请你回答一下STL里resize和reserve的区别

    14请你说一说stl里面set和map怎么实现的

    3、类和数据抽象

    1.请你来说一下C++**中类成员的访问权限

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

    3、请你回答一下C++类内可以定义引用数据成员吗?

    4、面向对象与泛型编程

    1、请你回答一下**什么是右值引用,跟左值有什么区别?

    5、编译与底层

    1、 请你来说一下一个C++源文件从文本到可执行文件经历的过程

    2、 请你来回答一下include头文件的顺序以及双引号””和尖括号的区别?

    3、 请你回答一下malloc的原理另外brk系统调用和mmap系统调用的作用分别是什么?

    4、 请你说一说C++的内存管理是怎样的

    5、请你来说一下C++/C的内存分配

    6、请你回答一下**如何判断内存泄漏?

    7.请你来说一下什么时候会发生段错误

    8请你来回答一下什么是memory leak也就是内存泄漏

    9请你来回答一下new和malloc的区别

    10请你来说一下共享内存相关api 

    11、请你来说一下reactor模型组成

    12、请**自己设计一下如何采用单线程的方式处理高并发

    13、请你说说C++如何处理内存泄漏?

    14请你说说select,epoll的区别原理,性能,限制都说

    15、请你说一说C++ STL 内存优化

    6、C++11

    1、请问C++11有哪些新特性

    2、请你详细介绍一下C++11中的可变参数模板右值引用lambda这几个新特性。

    二、操作系统

    1请你说一下进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么同步的

    2请你说一说Linux虚拟地址空间

    3请你说一说操作系统中的程序的内存结构

    4请你说一说操作系统中的缺页中断

    5请你回答一下fork和vfork的区别

    6请问如何修改文件最大句柄数?

    7请你说一说并发(concurrency)和并行(parallelism)

    8请问MySQL的端口号是多少,如何修改这个端口号

    9请你说一说操作系统中的页表寻址

    10、请你说一说**有了进程,为什么要有线程

    11请问单核机器上写多线程程序,是否需要考虑加锁,为什么?

    12请问线程需要保存哪些上下文,SP、PC、EAX这些寄存器是干嘛用的

    13请你说一说**线程间的同步方式,最好说出具体的系统调用

    14请你说一下多线程和多进程的不同

    15、请你说一说**进程和线程区别

    16、游戏服务器应该为每个用户开辟一个线程还是一个进程,为什么?

    17、请你说一说OS缺页置换算法

    18、请你说一说**进程和线程区别

    19请你说一下多进程和多线程的使用场景

    20请你说一说死锁发生的条件以及如何解决死锁

    21请问虚拟内存和物理内存怎么对应

    22请你说一说操作系统中的结构体对齐,字节对齐

    23请问进程间怎么通信

    24、请你说一下虚拟内存置换的方式

    25请你说一下多线程,线程同步的几种方式

    26请你讲述一下互斥锁(mutex)机制以及互斥锁和读写锁的区别

    27请回答一下进程和线程的区别

    28请你说一说进程状态转换图,动态就绪,静态就绪,动态阻塞,静态阻塞

    29、A a = new A; a->i = 10;在内核中的内存分配上发生了什么?

    30、给你一个类,里面有static,virtual,之类的,来说一说这个类的内存分布

    31、请你回答一下软链接和硬链接区别

    32、请问什么是大端小端以及如何判断大端小端

    33请你回答一下静态变量什么时候初始化

    34请你说一说**用户态和内核态区别

    35、请问如何设计server,使得能够接收多个客户端的请求

    36、死循环+来连接时新建线程的方法效率有点低,怎么改进?

    37、请问怎么唤醒被阻塞的socket线程?

    38、请问怎样确定当前线程是繁忙还是阻塞?

    39、空闲的进程和阻塞的进程状态会不会在唤醒的时候误判?

    40、请问就绪状态的进程在等待什么?

    41、请你说一说多线程的同步,锁的机制

    42、两个进程访问临界区资源,会不会出现都获得自旋锁的情况?

    43、假设临界区资源释放,如何保证只让一个线程获得临界区资源而不是都获得?

    44、windows消息机制知道吗,请说一说

    45、C++的锁你知道几种?

    46、说一说你用到的锁

    47、请你说一说死锁产生的必要条件?

    48、请你说一说什么是线程和进程,多线程和多进程通信方式

    49、请你说一说**内存溢出和内存泄漏

    50、进程和线程的区别,你都使用什么线程模型

    51、请你来说一说协程

    52、系统调用是什么,你用过哪些系统调用
    53、请你来手写一下fork调用示例

    54、请你来说一说用户态到内核态的转化原理

    55、请你说一下源码到可执行文件的过程

    56、请你来说一下微内核与宏内核
    57、请你说一下僵尸进程

    58、请问GDB调试用过吗,什么是条件断点

    59、请你来介绍一下5种IO模型

    60、请你说一说异步编程的事件循环

    61、请你回答一下操作系统为什么要分内核态和用户态

    62、请你回答一下为什么要有page ***,操作系统怎么设计的page ***

    63、server端监听端口,但还没有客户端连接进来,此时进程处于什么状态?

    64、请问如何设计server,使得能够接收多个客户端的请求

    65、死循环+来连接时新建线程的方法效率有点低,怎么改进?

    66、就绪状态的进程在等待什么?

    67、请你说一下多线程的同步,锁的机制

    68、两个进程访问临界区资源,会不会出现都获得自旋锁的情况?

    69、假设临界区资源释放,如何保证只让一个线程获得临界区资源而不是都获得?

    70、请问怎么实现线程池

    71、Linux下怎么得到一个文件的100到200行

    72、请你来说一下awk的使用

    73、请你来说一下linux内核中的Timer 定时器机制

    三、计算机网络

    1.你的研究方向是无线传感器网络,**请问**怎么确保节点传输存储的可靠性

    2. 请你说一下**TCP怎么保证可靠性,并且简述一下TCP建立连接和断开连接的过程

    3请你说一说TCP的模型,状态转移

    4请回答一下HTTP和HTTPS的区别,以及HTTPS有什么缺点?

    5、请你说一说HTTP和HTTPS的不同

    6.请你说一说HTTP返回码

    7.请你说一说IP地址作用以及MAC地址作用

    8、请介绍一下操作系统中的中断

    9.请回答OSI七层模型和TCP/IP四层模型,每层列举2个协议

    10请你说一说TCP的三次握手和四次挥手的过程及原因

    11、搜索baidu,会用到计算机网络中的什么层?每层是干什么的

    12、请你说一说TCP拥塞控制?以及达到什么情况的时候开始减慢增长的速度?

    13、请问TCP用了哪些措施保证其可靠性

    14、请你说说**TCP/IP数据链路层的交互过程

    15、请你说说传递到IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文

    16、请问你有没有基于做过socket的开发?具体网络层的操作该怎么做?(其实就是网络编程的基本步骤)

    17、请问server端监听端口,但还没有客户端连接进来,此时进程处于什么状态?

    18、请问TCP三次握手是怎样的?

    19、请问tcp握手为什么两次不可以?为什么不用四次?

    22、请你来说一下TCP拥塞控制?

    20、TCP和UDP的区别和各自适用的场景

    21、请你来说一下TCP三次握手四次挥手的过程,为什么tcp连接握手需要三次, time_wait状态

    22、请你来说一说http协议

    23、请你来说一下GET和POST的区别

    24、请你来说一下socket编程中服务器端和客户端主要用到哪些函数

    25、请你来说一下**数字证书是什么,里面都包含那些内容

    26请你来介绍一下UDP的connect函数

    27、请你讲述一下TCP三次握手,四次挥手,以及为什么用三次握手?

    28、请你说一下阻塞,非阻塞,同步,异步

    29、请你讲述一下Socket编程的send() recv() accept() socket()函数?

    30、请你说一下http协议会话结束标志怎么截出来?

    31、请你说一说三次握手

    32、请你说一说四次挥手

    33、请你说一说TCP/IP数据链路层的交互过程

    四、数据库

    1、数据库基础

    1.请你说一下数据库事务以及四个特性

    2.请你说一说数据库的三大范式**

    3请你介绍一下数据库的ACID特性**

    4、请你说一说数据库索引

    5、请你说一说数据库事务

    6、请你说一说数据库事务隔离

    7、请你说一说inner join和left join

    8、请你聊一聊**数据库事物的一致性

    9、请你说说**索引是什么多加索引一定会好吗

    10、k-v存储中,key有哪些要求?

    11、介绍数据库中的WAL技术

    2、Mysql


    1.请你说一说mysql四种隔离状态

    2.请你介绍一下mysql的MVCC机制

    3、请问SQL优化方法有哪些

    4、请你说一下MySQL引擎和区别

    3、Redis


    1.请你回答一下mongodbredis区别

    2.请你说一下mysql引擎以及其区别

    3请你来说一说Redis的定时机制怎么实现的

    4请你来说一说Redis是单线程的,但是为什么这么高效?

    5请问Redis的数据类型有哪些,底层怎么实现?

    6请问Redis的rehash怎么做的,为什么要渐进rehash,渐进rehash又是怎么实现的?

    7请你来说一下Redis和mem***d的区别

    8、请问Redis怎么实现的定期删除功能

    9、请你说一说**Redis对应的命令和数据类型...

    五、算法与数据结构

    1、树

    1.请你来说一说红黑树和AVL树的定义,特点,以及二者区别

    2、请你聊一聊哈夫曼编码

    3请你回答一下map底层为什么用红黑树实现

    4、请你介绍一下B+

    5、请你说一说map和unordered_map底层实现

    6、请你回答一下map和unordered_map优点和缺点

    7、请你回答一下epoll怎么实现的

    8、请你说一说C++两种map

    9、请问红黑树了解吗

    10、请你说一说红黑树的性质还有左右旋转

    11、请你说一说**红黑树的原理以及erase以后迭代器的具体分布情况?

    12、请你实现二叉树的层序遍历并输出

    13、手写代码:二叉树序列化反序列化

    2、堆与栈

    1请说一说你理解的stack overflow,并举个简单例子导致栈溢出

    2、请你回答一下栈和堆的区别,以及为什么栈要快

    3、手写代码:两个栈实现一个队列

    4请你来说一下堆和栈的区别

    5、请你说一说小根堆特点

    3、数组

    1、请你回答一下**Array&List, 数组和链表的区别

    2.一个长度为N的整形数组,数组中每个元素的取值范围是[0,n-1],判断该数组否有重复的数,请说一下你的思路并手写代码

    4、排序

    1、请你来手写一下**快排**的代码

    2、请你手写一下**快排**的代码

    3.请问求第k大的数的方法以及各自的复杂度是怎样的,另外追问一下,当有相同元素时,还可以使用什么不同的方法求第k大的元素

    4请你来介绍一下各种排序算法及时间复杂度

    5、请你说一说你知道的**排序算法及其复杂度

    6、请问海量数据如何去取最大的k个

    7请你说一说Top(K)问题

    8、请问快排的时间复杂度最差是多少?什么时候时间最差

    9、请问稳定排序哪几种?

    10、请你介绍一下快排算法;以及什么是稳定性排序,快排是稳定性的吗;快排算法最差情况推导公式


    5、哈希

    1、请你来说一说hash表的实现,包括STL中的哈希桶长度常数。

    2请你回答一下hash表如何rehash,以及怎么处理其中保存的资源

    3、请你说一下哈希表的桶个数为什么是质数,合数有何不妥?

    4、请你说一下解决hash冲突的方法

    5、请你说一说哈希冲突的解决方法

    6、动态规划

    1、请你手写代码:最长公共连续子序列

    2、手写代码:求一个字符串最长回文子串

    3、手写代码:查找最长回文子串

    7、链表

    1.请你手写代码,如何合并两个有序链表

    2、手写代码:反转链表

    3、判断一个链表是否为回文链表说出你的思路并手写代码

    4、请你手写链表反转

    5、什么是单向链表,如何判断两个单向链表是否相交

    7、高级算法

    1如果让做自然语言理解(NLU),在处理语言规则的时候大概会用到什么算法

    2、请问加密方法都有哪些

    3、什么是LRU缓存

    4、请你说一说洗牌算法

    8、字符串

    1、给你一个字符串,找出第一个不重复的字符,如“abbbabcd”,则第一个不重复就是c

    六、项目相关

    1、请你回答一下git中Merge和rebase区别

    七、设计模式

    1、请问你用过哪些设计模式,介绍一下单例模式的多线程安全问题

    2、请问你了解哪些设计模式?

    3、请问如何保证单例模式只有唯一实例?你知道的都有哪些方法?

    4请你说一说OOP的设计模式五项原则

    5、请你说说**工厂模式的优点?

    6、请你说一下观察者模式

    7、请你介绍一下单例模式

    8、单例模式中的懒汉加载,如果并发访问该怎么做?

    9、装饰器模式和单例模式,使用单例模式应该注意什么

    八、场景题

    1、给你两个球,100层楼,每个球在一定高度扔下去会碎,怎么用最少的次数给判断是几层楼能把求摔碎?

    九、分布式与架构

    1、分布式缓存和分布式存储的设计
     
    以上统统不重要,点击右边看答案https://www.nowcoder.com/tutorial/93/a88b64c6d7b14a59aad2061b9fd15ac2
     
    来源很重要,面试题答案以及后续更新请转到原链接
    作者:牛妹
    链接:https://www.nowcoder.com/discuss/164721?type=2
    来源:牛客网
     
  • 相关阅读:
    [转]说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
    [转]Vue-Devtools安装配置教程(献给伸手党)
    [转]vscode 插件推荐
    [转]eclipse中explorer显示方式
    [转]小D课堂
    [转]eclipse中 properties文件编码问题
    [转]windows环境下启动与停止.jar文件
    [转]Maven 国内源配置(2019/2/14)
    [转]Maven 全局配置文件settings.xml详解
    [转]IntelliJ IDEA 2019 上手
  • 原文地址:https://www.cnblogs.com/lixuejian/p/12552434.html
Copyright © 2020-2023  润新知