暑期实习面经
1 offer选手总结一下最近这段时间准备暑期实习的经历
好像是2月16号回学校开始准备的,研究生方向是自然语言处理,但想找C++开发,就复习计算机基础,学习linux,mysql这些
笔试面试经历
网易-游戏研发岗位
最早投递的是网易互娱,3.17笔试,0ac,不得不说三道hard难度的题真的难搞。
后面又投了网易雷火,笔试做了签到题目,其他题过了一点点,又gg
感觉网易的题目偏难,实在不好做,菜是原罪
蚂蚁集团-C++研发
首先投的是阿,给转到蚂蚁了,笔试a了一道半,选择题做的一般
一面
自我结束
研究什么,有没有顶会论文...
比较基础,就问了c++和c语言的区别
c++面向对象这些
进程间通信
进程线程的区别
一道概率题,一个正三角形三个顶点有三只老鼠,每只老鼠可以沿着三角形的边走,每只老鼠可以走两条边,概率都相同,求这三只老鼠会相遇的概率。(当时自己想的逆向思维,求不会相遇的概率1/2 * 1/2 * 1/2 = 1/8,相遇则为1 - 1/8,但忘记考虑可以逆时针和顺时针两个方向,不会相遇应该是1//8 + 1/8,应该是1 - 1/4,面试官提醒了一下)
问一道算法题,怎么判断链表有环(我说快慢指针,面试官叫想其他的方法,就说了遍历的时候标记节点)
二面
直接白板写题
第一题、三个线程循环交替打印0-66的数字(之前看黑马的linux系统编程自己还记得pthread_create,pthread_mutex_lock这些函数就写了个demo,给面试官说,自己还不太熟悉编写线程,进程这些,还在学习,面试官说大体思路是对的,讨论了一下,然后要注意交替需要判断当前线程是否可以打印当前数字,不可以就释放锁)
第二题、判断链表有环(本来很简单的,但在while循环里条件写错了,没有判断fast就取fast->next,当时太昏了,快慢指针写了好多遍,用来对链表找中点归并排序这些,但还是写错了,后面自己又用标记的方法写了一个函数)
写完后,面试官指出while条件的问题,问了一下nullptr相关的,然后问了io多路复用知道吗,就是一些系统编程和网络编程的知识。当时都不怎么会,就说还在学
反问有什么建议,面试官就说了要把计算机基础学好,Linux相关的学好,然后去公司里学习,写代码的一些规范。
问了表现怎么样,面试官说还可以,但要终和各种因素考虑。结束后查看就挂了,确实当时网络编程相关的不太熟悉
360-c++后台研发
4.2笔试,ac两道,题目不难,第二道是一个最小生成树,直接kruskal算法+并查集 就搞定了,到现在状态还是用人部门筛选
百度-c++研发工程师
3.29号笔试, 选择题基础,一般,ac2.3,第三题本来能过,但条件写错了,过了30%,后面修改好了之后提交接近考试结束,一直再转,没结果
4.10号面试
一面
自我介绍
c++11新特性(基本上都说到了,忘记说了构造函数初始化列表)
{nullptr替代 NULL
引入了 auto 和 decltype 这两个关键字实现了类型推导
基于范围的 for 循环for(auto& i : res){}
类和结构体的中初始化列表
Lambda 表达式(匿名函数)
std::forward_list(单向链表)
右值引用和move语义}
右值和右值引用
stl容器(顺序容器、关联容器,展开说了一下,嘿嘿看了c++primerplus 1到15章)
dequeue怎么实现的,操作的复杂度(说了一下中继器和缓冲区,表述不是很清楚)
linux常用命令(我文件经常使用的一些命令,还有系统相关的,说了一下)
怎么看cpu使用率(我top)
gdb调试知道吗(说了i,b,list,list:,display,printf)
你怎么调试一个程序,从一开始,到断点处,打印变量啥的
select和epoll什么区别(经典八股文)
epoll的使用过程(从socket 到 构造epoll树,epoll_wait这些说了)
epoll常用的操作(epoll_ctl,好像忘记说epoll_create)
来写两道题:
1、二叉树的层次遍历 基础题,很快就写好了
2、环形链表的第一个节点 基础题,但是出了一点小问题,15组只过了12组,原因是用fast->next&&fast->next->next当条件时,不能用fast == nullptr作为条件返回无环链表。因为当链表有两个节点时,没有环也会被判断有环,因为while循环不会进去。需要定义一个flag标记辅助。有点紧张就换了标记的方法,用的set来存放已经遍历的节点,谁知道编译器不支持,哭了
还好面试官看了一下,也没说啥,说可以了,就到这
很快就收到二面通知了
二面
面试官找了一下简历,没找到,一是我就共享了简历给他
按照简历来问
研究方向,想做的工作与你的研究方向不同会接受吗,说了自己目前想做c++,都可以。要是有相关的更好
有没有论文,一篇在投,你什么时候毕业,明年6月份
简历的两个项目
c++和opencv的传统图像识别,问了有没有用深度学习方式来试试,说了cnn图像分类识别的过程,解释了为什么要用传统的图像处理算法
信息安全的模型 rsa和des有什么区别,经常使用在哪,(说了一下,因为我这个项目跟https还挺相关的就说了在https里也用,但面试官没深入问)
比赛问了一下,比赛的内容是什么
linux熟悉吗,平时用的开发环境,我平时主要在服务器上训练模型(基本上都可以用到一块a100,可惜自己不喜欢调参),在虚拟机上学习
硬链接和软链接,就说了一下ext2是索引式文件系统,硬链接是指向相同inode号,说了一下inode和数据区块,命令ln ln -s
那你Linux还挺熟悉的,了解ext2这些 (我本想说您误会了,但只能说文件系统是linux的一个重要概念,学习的时候就了解了一下)
自己又多说了分区,挂载这些,面试官就说那你用命令的过程来说一下,但我只记得fdisk了,想了一下是fdisk dev相关文件名 ,之后用monode挂载啥的,说了m什么node,面试官就提醒了是mount
linux从开机到用户界面(我就说了从外存读取系统相关文件,初始化,图形用户界面,没说到加载内核这些)
后面我主动展开话题说了比赛中用到的两个算法,textrank和bm25算法,展开说了textrank算法和谷歌的pagerank的相同和区别,面试官问了原理,表示懂了,问了一下应用场景。然后我说bm25算法是搜索中比较常见的算法,说了一下,面试官没怎么问,后面问了你的研究方向在工业界的落地你了解吗?我说应该是基于谷歌的bert,进行文本分类和抽取的一些工作,还有一些机器学习和规则的使用。然后就是三面了。
三面
面试官感觉是个部门领导,首先说不急,我找一下你简历,我说共享,面试官说没事,就在系统里找。找到了之后又说你等一会,我看一下你前面的面评。看完之后,我自我介绍,然后面试官问简历的项目,随便问了一下。之后说,我们来聊几个技术问题吧,你是科班的吧,我说嗯。
一个程序从编写到运行的过程?
我很快的说了编写完用gcc和g++预处理 编译 汇编 链接 可执行文件加载到内存 从第一条指令执行。 面试官说不行,要具体展开过程来讲,我就说了编译原理的词法分析句法分析,然后预处理,编译,汇编器as,链接器这些,面试官说可以,听到你说了as,之后问链接器有哪些,我说了ld-linux.so.x,面试官说你没有说静态连接器,我说不知道了,面试官说了是什么link我记不住了
目标模块怎么链接所需要的模块?
我说函数和变量其实就是名字,面试官说你说的是符号吧
我又说目标模块有相关的数据结构指导链接,面试官说那叫符号表
两个目标模块,都有定义了一个stactic变量,变量的名字相同,在运行的时候怎么区分这两个模块的变量,我一开始从编译的角度说,static只能内部查找,但面试官说要从运行的角度来说,我就说了两个模块加载到内存的地址不一样的话,也可以区分。面试官就说,你说到了一点吧,加载到内存后,程序只知道变量的地址,不会被名字影响。
内存管理说一下,我说了一堆,为了多道程序的并发执行,虚拟内存这些,好像不太是面试官想问的
存储器的层次结构
我从寄存器-> cache cache->内存 内存->外存 细致的说了,虽然表面上只有后面两层,面试官又问寄存器为什么比存储器快,我说离cpu近,直接就读到了,还有一些底层硬件的支持,什么底层硬件,你们科班学过数电模电应该知道,想了半天说了触发器和电容,存储器要维持电容操作,需要更新,面试官说专业术语叫flash。
后面就是问日常作息、对疫情怎么看、兴趣爱好,打不打游戏、追剧吗这些
一面 40多分钟 二面 30多分钟 三面最久的,后面两面都没有写题了
金山云c++研发工程师
一面
自我介绍
面试官问了一下研究方向的问题
C++语言相关问的不多
linux问了一点,write,send两个系统调用函数,epoll和select的区别
手写二分查找,找出值在数组中出现的最左边索引,但给出的升序数组有重复元素(在判断mid等于target时,如果mid-1 == mid, 则把r = mid - 1)
二面
自我介绍
写了两道题
一、判断一棵树是不是完全二叉树
一开始想错了,想的是先找层数,判断倒数第一、二层的结构满不满足
后面想到了用层次遍历来解决,如果遍历到了nullptr之后还遍历到值,则return false
二、给出一个升序数组,构建一颗平衡二叉树
马上就想起了之前数据结构里的插入一颗树,维持平衡,但记不起来了
后面面试官提醒,数组有序,可以用中点来当当前root,再递归的构造左子树和右子树
马上就写了,但是tm给忘记写递归出口了,调试有问题
面试官看了一些,就说到这了,一个小时过去了
刚好碰到没复习好的知识点,有点拉跨,不知道能不能过二面,明明今天拿来保底的,欸
这里举一反三,如果给出一个数组,要构造平衡二叉树,则可以先sort再用上面的方法递归构造
地平线智能中间件软件工程师
一面
自我介绍
面试官问了研究方向,论文,创新点
问了一下项目
之后开始c++基础
linux相关的
问了用没用过其他处理器,说了单片机、树莓派,说了一下干过啥
写一道题,二分查找。。。
之后面试官说没有什么问的,我反问
二面
面试官应该是领导
自我介绍
问了两个项目和比赛,问了如果现在去做,会有哪些改进,自己就分析了一下
进程和线程区别
计算机网络七层协议
看代码:
给出一段代码,分析结构体对齐的问题
写两道题
1、二分查找...(你应该很熟悉吧)
2、把一个数组中所有元素循环左移n位
要求空间复杂度为O(1)没写出来,应该是交换,分段反转,但自己没整出来
面试官说那你写一下不要求O(1)的,三行代码直接a了
面试官笑了,不要求就很好写了,给我说了一下O(1)思路,说觉得我写的也挺好的,可能代码规范啥的好
问了什么时候可以来实习,我们是在上海
希望给个机会吧,上一家金山云已经gg了,明明可以拿来当备选,真可惜
感觉自己还是代码题写的不多,三月到现在也才刷了300多一点题,笔试做了很多场
腾讯魔方工作室 c++后台
一面
自我介绍
问研究方向
比赛里的textrank算法,面试官还跟我探讨和讨论了一下
简单问了一下两个课设项目(没有项目属实拉跨)
C++语言
右值,右值引用,问的挺细的,问了除用于移动语义外还可以用于其他什么,没想到说了一个函数重载,面试官说可以用做返回类型(但返回类型不就是右值嘛)
类的大小:麻了,有成员函数没有数据成员的类对象大小也只是1(没答对这种情况) 对象只跟非静态数据成员的大小有关,虚函数等指针也占空间
虚函数:派生类怎么调用基类的虚函数,想的是类作用域名加指针,其实说对了,但面试官还想等我分析一下,又分析错了
虚基类:好像说了虚基类中有多个数据成员时会出现什么问题(这里涉及到虚继承的时候,数据构造的问题,最好在基类中使用默认构造。不然每个派生类都要显示的调用基类的构造函数)
stl,map,红黑树,为什么用红黑树,multi_map用的啥,分析倒是分析了,但是答的不是很好,尤其是multi_map
问一个算法,有一个随机函数生成0概率30%,生成1概率70%,基于当前函数怎么让一个函数生成0 1 都是50%的概率,想了一下说了思想,统计,但是忘记leetcode上的怎么做的了
刚好一个小时,就结束了,不知道能不能二面,腾讯面试深度是最深的,还是得静下心好好看书,自己项目太弱了,虽然看了webserver,但是没写上去,自己一直想用一个c++webserver来部署nlp的算法,奈何前后端太弱了,还得慢慢来
携程-云计算工程师
携程后面被捞面试了。
问的难度一般
一面
斐波那契数列 探讨一下层数太大,递归栈溢出的影响
最大子序和 要求优化了一下空间复杂度
二面
给出一个数组和一个元素,删除数组中的这个元素
写了一个空间复杂度o(n)
要求o1,后面优化写了一个,把要删除的元素移到末尾去
6.9号约hr面,已经在实习了,丑拒
#腾讯##百度##蚂蚁集团##金山云##携程#