IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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++面经

先说下结果吧,四月中旬开始找工作,不到两个月的时间边投边学,总共投了三波,最后也拿到了四份offer,后面签约后发现还有两家在约面试,我对目前这家公司已经很满意了所以拒绝了(都过去大半个月了)以下的面经为了隐私,我就没有写出地方和薪资了,仅仅写了一下公司的领域,当然,多益除外(多益是我通过并得知待遇后拒绝的最干脆的),这家大公司的面试题换的挺多的,网上资料也很多,虽然拒绝了,但面试题确实值得学习,受益匪浅。

考研结束后,报的211勉强过了复试线但面试很遗憾没有通过,于是四月中旬才开始尝试找工作。已经是春招快结束的时候才开始做简历,而且由于大三下到面试前基本上都在准备考研,期间并没有什么新项目可以丰富简历,只有啃老底,蓝桥杯的国二(单片机组)及大二期间跟着老师一起做的寻路产学研项目,也申请了两个软著,不过也仅仅是无关紧要加分项罢了,招聘信息中写的加分项一般都是ACM,实习经历,企业级项目,名校学历(部分企业筛学历真的是无能为力,除非考研)等。之前也做过微信小程序,unity的一些小游戏及php服务器操作数据库,前后端通信数据交互这一块,不过找的是C++的岗位,不太契合所以也只是放在简历中的小角落一笔带过,简历比较空白,我也没报太大期望,打算边投边学,于是开始了第一波简历投递。

第一次投递:

虽说有点心理准备,但结果还是比想象中的要差,投十家可能就只有两家给了笔试机会,而且笔试光靠老底也只过了一半,还有考到设计模式和c++新特性,我考研时学的教材书可基本没涉及到新特性,这一块完全空白(果然学校和社会还是有所脱节)。但也拿到了一家机械制造领域的offer,虽然最后感觉待遇并不满意拒绝了,但是作为刚开始的面试还是学了挺多的。

机械制造面经:

共两面,第一面,技术面,但更像是基础笔试,c++的基础知识,指针,面向对象三特性,泛型编程,继承,虚类等,比较基础就不多说了,而后问到了c++新特性,智能指针(没答上),设计模式(观察者模式,大致说出来了),还有一些记不清了,毕竟太久了,新特性的问题我基本都答不太对,但除此之外基本全对所以一面还是过了。

第二面,技术面,问到了交叉编译(生成跨平台的可执行文件,例如在pc上生成hex文件),realse和debug模式的区别(debug,有报错功能,测试用,realse体积小,发布用),STL标准库的基础内容,vector动态数组怎么扩容的(申请两倍大小的空间,复制过来删除原来的),还有问了一些知识点,我忘了,并不多。之后就开始问我简历上的内容了,项目怎么实现的,比赛怎么准备的,平时学习方法一类的问题。面试到后面就开始介绍公司和岗位了,然后一些交流了。可能基础还行,所以最后还是通过了,虽然面试官人都很好,但研究方向和待遇都不太满意,还是拒绝了。

之后总结发现最关键还是简历通过率太低了,我也比较清楚,项目经验不足是最大原因(毕竟名校、实习、竞赛现在可无法在这上面进行弥补了)。于是开始了漫长的项目学习,其实看我之前的博客就知道,在图书馆借了本游双老师的《linux高性能服务器编程》,开始一章一章的学习,并在期间补上一些欠缺的知识点。

第二次投递

大概二十天左右(没细数),完成了这个项目之后开始了第二波简历投递,这次简历通过率明显上升了很多,不过收到的笔试也基本只有半数能通过,而其中面试后得到的反馈也是项目经验不足,方向不契合等,短时间内也没法学习这么多知识,非常乐观心态良好,也是继续边学边投,直到经历了一次面试。嗯,这个面经我好像之前有写过?那就直接看看吧CSDN

此次面试之后让我明白了,一个大好的机会我没有把握住,只能怨我不够努力,于是我把当时投递出去的所有简历都给取消了,又开始了新一轮的学习,这次主攻算法数据结构,开始深入研究部分常见算法源码及各常见数据结构的底层原理,手写哈希表,根排序,并查集,各设计模式等,主要还是以力扣题为主,进行查缺补漏,而且是精做,把每一题的所有解法(只要不超纲,评论区里的那种用快速傅里叶变化加速运算的神仙解法境界太高了)全部理解一遍,然后把最优解写一遍。

期间也抽空花了几天时间写了一个QT的小小游戏作为小项目丰富简历,毕竟招聘信息中好像有很多写了QT是加分项。

第三次投递

这一次投递投的并不多,因为拿到机器视觉公司的offer(并非核心算法,那基本得硕士门槛)后就没有再投递了,不得不说这家公司效率极高,从我投递简历到拿到offer只花了四天时间,第一天下午投递简历,下午五六点时给我发了笔试题说一个星期内发过来,我第二天中午就写完发过去了,第三天面试,第四天给offer,之后就没再投递简历了,但之后又通过了两家,一家信息安全公司(目前签约的公司),还有多益(游戏开发岗)。

机器视觉面经:

两轮,第一轮是笔试,多个题,其中有一题是连通图,可以用dfs,bfs和并查集做,我当时写的是无递归的dfs,应该算最优解;还有一题是拓扑排序,当时没想到用了双哈希表来记录数据,虽然现在看来不是最优解,但是好像以一种奇怪的方法实现了而且效率不是很差?还有一题是链表成环,简单秒了,就不多说了。

第二轮是综合面试,一位技术人员,一位技术总监(还是组长?),一位hr,意外的没有问到笔试题,我都想好怎么说了。技术人员首先问了一些基础知识,STL库,基本算法数据结构,到网络编程,多线程,还有QT的知识点(好像也只有信号槽),其中有一个给了一段程序代码让你说出结果,并指出存在什么问题,就是考vector扩容原理,扩容之后迭代器失效,基本都答得挺好,可能是基本都答出来了,没做笔记而且过了好久了没有及时写面经,忘记具体问了什么知识点了哈哈。后面让我开着项目源码介绍一下,并让我手撕多线程进行网络通信(我还以为是线程池,还稍微记了一下),这些函数之前一直用的我自己写好封装好的函数库,结果从头开始写反而不会了,写了网络通信但是没用线程进行(这些函数名字那么长,这么多参数,linux上面的编译器还没有代码补全也没有函数介绍欸,没敢当着面试官的面百度。。。)后面到了技术总监环节,问了问做的三个项目,并也让我介绍了一下QT的小游戏,并让我详细介绍某个功能是如何实现的,让我谈谈对QT的认知啥的,还有根据简历问了一些专业问题吧,也记不太清了。最后是跟hr的交流,第二天就发了offer,几个面试官都非常好,而且待遇也不错,但是这是一家机器视觉公司,我担心自己未来以本科的学历无法参与到核心开发团队非常的纠结,虽然我本身是愿意往这方向发展,但让一介本科生来为何不直接招一名这方面专业的硕士呢?我明白参与核心团队机会渺茫,不甘止步于边缘开发,于是在再三考虑之下选择了其它公司。

信息安全面经:

四轮,第一轮笔试,第二轮机试,第三轮分公司总监面试,第四轮总公司总监面试。没了,对,没了,马上就职的公司,还是保留一点。

多益(游戏开发)面经:

多益的名号还是挺大的,各个方面。值得一提的是技术面试很有水准,值得学习。

三轮,第一轮笔试,具体忘了,考研学过408,笔试涉及到的知识面比较广,涉及到c++基础内容(字符串,指针,还有经典基类指针指向派生类对象等)各个排序的稳定性,计算机网络等内容,而且其中还有一题是英语翻译题,给出英文翻译成中文,我的材料是建模,说到如今模型逼真到以假乱真啥的,略有接触,还算看得懂。其它的也是记不太清了,不过多益网上资料多,搜一搜就有。

第二轮是hr面,这个就没什么好说的了,就是介绍自己做的项目,我投的是服务端的岗位,hr可能看我之前做的项目特别多是游戏相关(毕竟就是用游戏引擎unity做的),把我调到游戏开发岗上面去了,不过我也挺乐意的就是了。

第三轮是技术面,一上来简单的自我介绍后让我用递归写一个斐波那契数列,我愣了一下好突然,不过这个不难打开编译器两分钟写好了(要是没写出来可能今天的面试就到这了),之后问了指针与引用的区别(初始化,占用空间,可不可为空,多级指针这些吧),链表的构成(好基础),问了链表成环问题(快慢指针),哈希表底层原理(数组加链表),查找有序数组中的一个数(我愣了一下,答二分查找,结果对了,问的有点模糊),等一些算法数据结构的题。

关键到了,印象最深刻的两个题,第一题:在一堆偶数个数的数中找出一个奇数个数的数(大概是这个意思,举例:1,1,3,3,6,6,6,7,7,找出6)我苦思冥想,肯定至少需要遍历一遍的,时间复杂度不可能小于o(n),遍历的时候塞入哈希表,最后遍历哈希表,也就是时间复杂度为o(nlogn+根号n,应该没错吧,哈希表涉及良好的话长度应该为根号n)也就是nlogn,说了一遍,面试官摇头了,但没办法短时间内想不出。事后一查,用位运算,每一个数异或一遍就好了,。位运算我只知道设计加减乘除,就是加法器的原理嘛,看来之后得去补补位运算了。

第二题:设计屏蔽词系统,三个问题,

(1)屏蔽词检测放在服务端还是客户端?

????????我回答的服务端,理由,尽可能减少客户端的性能消耗,检测文件放在内存占用内存资源,放在磁盘影响速度(IO读写很慢的欸)怎么都不合适,而且可以保证安全性(客户端可能用户自行篡改本地文件,你别说,我之前玩联盟改过皮肤文件,不过被封号了一段时间)且便于修改(放在客户端需要所有人一起更新)

(2)怎么判断一个句子中是否有屏蔽词?

? ? ? ? 我第一反应滑动窗口脱口而出,面试官回了一句也就是需要一个一个判断了?我想单个字也有屏蔽词的啊,比如说氧化钙,就回答了是的。面试完了总感觉不对劲,突然意识到,字符串匹配算法最经典的不就是kmp吗???这可是考研的知识点啊(活该我没考上,哭了,面试官给的示例是中文,我真的没想到,还是练少了)。看来面试官就是想考察我有没有掌握kmp,这题没答上。事后想想又仔细想了想,滑动窗口会有漏洞,也就是说滑动窗口不可取,不是不好,而是这是错的,有一些情况没有考虑到。

(3)怎么存储这些屏蔽词?

? ? ? ? 这题算答的还行吧。我答得哈希表,首个字符放入数组,然后后面再放几个节点(树的概念,我当时都还没意识到),相当于是第一层哈希表,下面接着的不是链表而是树,第一反应就是哈希表因为一直想着减少搜索时间,用哈希表用哈希表用哈希表。看面试官的反应好像还可以,算是答对了吧。后面几天写力扣时发现就是前缀树,哈希表是空间换时间,也不赖。

还没完呢,这只是算法和数据结构的环节,后面问到了计算机网络,这个环节,我直接领域展开(其实会的并不多,只是刚好问的都会)。网络七层模型,老基础了,叭叭叭,TCP握手,也是老基础了,序列码标志位过来,这边过去那边过来,挥手四次是因为中间停了一下分两次发了,停了两倍时间,确保数据全部传输完毕。

之后:“你会网络编程吗”,“稍微会点”,“讲一讲socket通讯”,

“服务端:socket创建套接字,bind绑定,listen监听,accept接收连接,read/write读写,close关闭。客户端。。。。(差不多,此省略,想了解看我之前写的或者网上详细的博客)”

“好,你刚刚说到了listen,那你知道IO多路。。。”

“您说的是IO多路复用吧!我之前的项目用到了epoll来减少IO读写对速率的影响。平常的监听会阻塞影响。。。。。(省略好多字)”

“那你知道什么并发。。。”

“您说的是并发模型对吧!proactor和reactor,这里用的是同步IO模拟proactor。。。(省略)”

“说说你刚刚提到的select,poll。。。”

“区别和应用场景对吧!epoll只负责活跃连接。。。(省略)”

(面试官沉默了,进入了下一个环节)

这个环节把我自信心拉满了,我又又又行了?当然这个过程没有这么夸张,我哪敢打断面试官说话哈哈。这个环节真的是运气好,如果是针对项目问的对答如流倒倒也正常,这次刚刚好是撞上了我会的部分。

后面又问到了redis,问我会吗,我说听过没用过,面试官直接跳过了。哭了,早知道扯一扯会的,快是因为是内存数据库,不存在IO读取,是单例模式啥的,不过会的也确实不多。没想到是居然直接问redis,没有问数据库的基础。线程方面好像问了线程池?忘了,要么会要么没问啥。

------------------------------------------------分界线------------------------------------------------?

感觉忘了好多,应该有很多值得讲的,当初每次面试结束我都是写在草稿纸上进行总结的,没有放在网上,现在都回想不起来这些宝贵的经验了。大学四年就这么结束了,感觉走了挺多的弯路,如果当时没有考研选择去实习,参与了秋招和春招,现在专业水平会不会已经不在一个层次上了呢,不过考研生活也过得挺充实并不反感,逐步接收新知识倒也挺有趣,事已至此能做的也只有继续努力。

我好乐观,得知考研复试落榜之后过两天我就像个无情机器一样海投没啥含金量的简历,我的坏心情直接被无缝衔接了,我哭死。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:37:15  更:2022-07-04 22:38:02 
 
开发: 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年5日历 -2024/5/12 2:02:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码