| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++工程师面试题(是否都会) -> 正文阅读 |
|
[C++知识库]C++工程师面试题(是否都会) |
一、基础知识基本语言 1、说一下static关键字的作用 2、说一下C++和C的区别 3、说一说c++中四种cast转换 5、给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码 6、怎么判断一个数是二的倍数,怎么求一个数中有几个1,说一下你的思路并手写代码 7、请你说一下你理解的c++中的smart pointer四个智能指针: 9、请你回答一下野指针是什么? 10、请你介绍一下C++中的智能指针 11、请你回答一下智能指针有没有内存泄露的情况 12、请你来说一下智能指针的内存泄漏如何解决 13、请你回答一下为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数 14、请你来说一下函数指针 15、请你来说一下fork函数 16、请你来说一下C++中析构函数的作用 17、请你来说一下静态函数和虚函数的区别 18、请你来说一说重载和覆盖 19.、请你说一说strcpy和strlen 20、请你说一说你理解的虚函数和多态 23、请你来写个函数在main函数执行前先运行 34、请你来说一下C++里是怎么定义常量的?常量存放在内存的哪个位置? 26、请你来说一说隐式类型转换 27、说说你了解的类型转换 28、请你来说一说C++函数栈空间的最大值 30、请你回答一下new/delete与malloc/free的区别是什么 31、请你说说虚函数表具体是怎样实现运行时多态的? 32、请你说说C语言是怎么进行函数调用的? 34、请你说说C++如何处理返回值? 35、请你回答一下C++中拷贝赋值函数的形参能否进行值传递? 43、请你回答一下malloc与new区别 36、请你说一说select 37、请你说说fork,wait,exec函数 38、请你回答一下静态函数和虚函数的区别 容器和算法 1、请你来说一下map和set有什么区别,分别又是怎么实现的 2、请你来介绍一下STL的allocator 3、请你来说一说STL迭代器删除元素 4、请你说一说STL中MAP数据存放形式 5、请你说说STL中map与unordered_map 6、请你说一说vector和list的区别,应用,越详细越好 7、请你来说一下STL中迭代器的作用,有指针为何还要迭代器 8、请你说一说epoll原理 9、请你说一说STL中MAP数据存放形式 10、n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(N) 11、请你回答一下STL里resize和reserve的区别 类和数据抽象 1.请你来说一下C++中类成员的访问权限 3、请你回答一下C++类内可以定义引用数据成员吗? 面向对象与泛型编程 1、请你回答一下什么是右值引用,跟左值又有什么区别? 2、析构函数可以为 virtual 型,构造函数则不能,为什么? 3、C++中空类默认产生哪些类成员函数? 4、什么是面向对象? 编译与底层 1、 请你来说一下一个C++源文件从文本到可执行文件经历的过程? 2、 请你来回答一下include头文件的顺序以及双引号””和尖括号的区别? 3、 请你回答一下malloc的原理,另外brk系统调用和mmap系统调用的作用分别是什么? 4、 请你说一说C++的内存管理是怎样的? 5、请你来说一下C++/C的内存分配 6、请你回答一下**如何判断内存泄漏? 7、请你来说一下什么时候会发生段错误 8、请你来回答一下什么是内存泄漏 9、请你来回答一下new和malloc的区别 10、请你来说一下共享内存相关api 11、请你来说一下reactor模型组成 12、请自己设计一下如何采用单线程的方式处理高并发 13、请你说说C++如何处理内存泄漏? 14、请你说说select,epoll的区别,原理,性能,限制都说一说 15、请你说一说C++ STL 的内存优化 C++11 1、请问C++11有哪些新特性? 2、请你详细介绍一下C++11中的可变参数模板、右值引用这几个新特性。 二、操作系统1、请你说一下进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么同步的 2、请你说一说Linux虚拟地址空间 3、请你说一说操作系统中的程序的内存结构 4、请你说一说操作系统中的缺页中断 5、请你回答一下fork和vfork的区别 6、请问如何修改文件最大句柄数? 7、请你说一说并发(concurrency)和并行(parallelism) 8、请问MySQL的端口号是多少,如何修改这个端口号 9、请你说一说操作系统中的页表寻址 10、请你说一说有了进程,为什么还要有线程? 11、请问单核机器上写多线程程序,是否需要考虑加锁,为什么? 12、请问线程需要保存哪些上下文,SP、PC、EAX这些寄存器是干嘛用的 13、请你说一说线程间的同步方式,最好说出具体的系统调用 14、游戏服务器应该为每个用户开辟一个线程还是一个进程,为什么? 15、请你说一说OS缺页置换算法 16、请你说一下多进程和多线程的使用场景 17、请你说一说死锁发生的条件以及如何解决死锁 18、请问虚拟内存和物理内存怎么对应 19、请你说一说操作系统中的结构体对齐,字节对齐 20、请问进程间怎么通信 23、请你说一下虚拟内存置换的方式 24、请你说一下多线程,线程同步的几种方式 25、请你讲述一下互斥锁(mutex)机制,以及互斥锁和读写锁的区别 26、请你说一说进程状态转换图,动态就绪,静态就绪,动态阻塞,静态阻塞 27、A a = new A; a->i = 10;在内核中的内存分配上发生了什么? 28、给你一个类,里面有static,virtual,之类的,来说一说这个类的内存分布 29、请你回答一下软链接和硬链接区别 32、请你说一说用户态和内核态区别 33、请问如何设计server,使得能够接收多个客户端的请求 34、死循环+来连接时新建线程的方法效率有点低,怎么改进? 35、请问怎么唤醒被阻塞的socket线程? 36、请问怎样确定当前线程是繁忙还是阻塞? 37、空闲的进程和阻塞的进程状态会不会在唤醒的时候误判? 38、请问就绪状态的进程在等待什么? 39、请你说一说多线程的同步,锁的机制 40、两个进程访问临界区资源,会不会出现都获得自旋锁的情况? 41、假设临界区资源释放,如何保证只让一个线程获得临界区资源而不是都获得? 42、C++的锁你知道几种? 43、说一说你用到的锁 44、请你说一说死锁产生的必要条件? 45、请你来说一说协程 46、系统调用是什么,你用过哪些系统调用,和库函数有什么区别? 47、请你来说一说用户态到内核态的转化原理 48、请你说一下源码到可执行文件的过程 49、请你来说一下微内核与宏内核 50、请你说一下僵尸进程 52、请你来介绍一下5种IO模型 53、请你说一说异步编程的事件循环 54、请你回答一下操作系统为什么要分内核态和用户态 55、请你回答一下为什么要有page cache,操作系统怎么设计的page cache 56、server端监听端口,但还没有客户端连接进来,此时进程处于什么状态? 57、请问如何设计server,使得能够接收多个客户端的请求 58、死循环+来连接时新建线程的方法效率有点低,怎么改进? 59、两个进程访问临界区资源,会不会出现都获得自旋锁的情况? 60、假设临界区资源释放,如何保证只让一个线程获得临界区资源而不是都获得? 61、请问怎么实现线程池 63、请你来说一下awk的使用 64、请你来说一下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个协议 11、搜索baidu,会用到计算机网络中的什么层?每层是干什么的 12、请你说一说TCP拥塞控制?以及达到什么情况的时候开始减慢增长的速度? 13、请问TCP用了哪些措施保证其可靠性 14、请你说说TCP/IP数据链路层的交互过程 15、请你说说传递到IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文 16、请问你有没有基于做过socket的开发?具体网络层的操作该怎么做?(其实就是网络编程的基本步骤) 17、请问server端监听端口,但还没有客户端连接进来,此时进程处于什么状态? 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协议会话结束标志怎么截出来? 四、数据库数据库基础 1、请你说一下数据库事务以及四个特性 2、请你说一说数据库的三大范式 3、请你介绍一下数据库的ACID特性 4、请你说一说数据库索引 5、请你说一说数据库事务 6、请你说一说数据库事务隔离 7、请你说一说inner join和left join 8、请你聊一聊数据库事物的一致性 9、请你说说索引是什么,多加索引一定会好吗 10、k-v存储中,key有哪些要求? 11、介绍数据库中的WAL技术 Mysql 1.请你说一说mysql的四种隔离状态 2.请你介绍一下mysql的MVCC机制 3、请问SQL优化方法有哪些 4、请你说一下MySQL引擎和区别 5、知道SQL注入吗?有哪些防御手段? Redis 1.请你回答一下mongodb和redis的区别 2、请你来说一说Redis的定时机制怎么实现的 3、请你来说一说Redis是单线程的,但是为什么这么高效呢? 4、请问Redis的数据类型有哪些,底层怎么实现? 5、请问Redis的rehash怎么做的,为什么要渐进rehash,渐进rehash又是怎么实现的? 6、请问Redis怎么实现的定期删除功能 7、redis的持久化方式有哪几种,分别有什么特点? 五、算法与数据结构树 1、请你来说一说红黑树和AVL树的定义,特点,以及二者区别 2、请你聊一聊哈夫曼编码 3、请你回答一下map底层为什么用红黑树实现 4、请你介绍一下B+树 5、请你回答一下map和unordered_map优点和缺点 6、请你回答一下epoll怎么实现的 7、请你说一说红黑树的性质还有左右旋转 8、请你说一说红黑树的原理以及erase以后迭代器的具体分布情况? 堆与栈 1、请说一说你理解的stack overflow,并举个简单例子导致栈溢出 2、请你回答一下栈和堆的区别,以及为什么栈要快 3、手写代码:两个栈实现一个队列 4、请你来说一下堆和栈的区别 数组 1、请你回答一下Array&List, 数组和链表的区别 2、一个长度为N的整形数组,数组中每个元素的取值范围是[0,n-1],判断该数组否有重复的数,请说一下你的思路并手写代码 排序 1、请你手写一下快排的代码,快排的最差复杂度是怎么样的?如何避免? 2、请问求第k大的数的方法以及各自的复杂度是怎样的,另外追问一下,当有相同元素时,还可以使用什么不同的方法求第k大的元素 3、请你来介绍一下各种排序算法及时间复杂度 5、请问快排的时间复杂度最差是多少?什么时候时间最差 6、请你介绍一下快排算法;以及什么是稳定性排序,快排是稳定性的吗;快排算法最差情况推导公式 哈希 1、请你来说一说hash表的实现,包括STL中的哈希桶长度常数。 2、请你回答一下hash表如何rehash,以及怎么处理其中保存的资源 3、请你说一下哈希表的桶个数为什么是质数,合数有何不妥? 4、请你说一下解决hash冲突的方法 动态规划 1、请你手写代码:最长公共连续子序列 2、手写代码:求一个字符串最长回文子串 3、手写代码:查找最长回文子串 链表 1、请你手写代码,如何合并两个有序链表 2、手写代码:反转链表 3、判断一个链表是否为回文链表,说出你的思路并手写代码 4、请你手写链表反转 5、什么是单向链表,如何判断两个单向链表是否相交 高级算法 1、如果让你做自然语言理解(NLU),在处理语言规则的时候大概会用到什么算法 2、请问加密方法都有哪些 3、什么是LRU缓存 4、请你说一说洗牌算法 字符串 1、给你一个字符串,找出第一个不重复的字符,如“abbbabcd”,则第一个不重复就是c 2、翻转字符串 3、字符串转整数 六、设计模式1、请问你用过哪些设计模式,介绍一下单例模式的多线程安全问题 2、请问你了解哪些设计模式? 3、请问如何保证单例模式只有唯一实例?你知道的都有哪些方法? 4、请你说一说OOP的设计模式的五项原则 5、请你说说工厂模式的优点? 6、请你说一下观察者模式 7、请你介绍一下单例模式 8、单例模式中的懒汉加载,如果并发访问该怎么做? 9、装饰器模式和单例模式,使用单例模式应该注意什么 七、场景题1、给你两个球,100层楼,每个球在一定高度扔下去会碎,怎么用最少的次数给判断是几层楼能把求摔碎? 2、一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少得比多少场才能知道跑得最快的5匹马? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/22 19:16:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |