首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
传递快乐
C++
发布于浙江
关注
已关注
取消关注
@ksgt:
zoom杭州 windows C/C++ 本科2年 社招面经
精华
Update:给各位观众老爷更新一下终面的情况,site manager + HR,终面面了大概快2个小时...脑壳痛 为了保证新来朋友顺序阅读,把更新的三面情况放在后面了 已经完成了一面、二面,在等结果,上来写个面经,以飨后人,顺便求个福,Orz zoom的面试体验,在我有限的面试经历中可以说是独树一帜,尤以一面为佳,老友聊天多于知识点拷问 从两个方面可以佐证,一面完成后,我像个上头的蚂蚱,四处忽悠我同学、朋友赶紧来面zoom,并且推掉近期的面试,只想着搞完zoom入职算了 在一面途中更多是一种探讨和论证,全程是裂开嘴面的,最后我吐槽起了zoom招聘投递异于常人,费了我不少功夫才成功投递出去;面试官说起工作与生活的情况,十分愉快 如果把面试当作平常工作中的浓缩以及映射,我觉得zoom是值得尝试的一家公司,也是我上头的原因之一 二面,面试官明显是个level更高的leader,很熟练地打开了zoom的虚拟背景,因此这次面试是在海滩上完成的。可惜面试官不苟言笑,缺失了一种吹着海风晒太阳的闲适和烂漫。 以下是具体问答 一面: 上来就是互相问候,然后相互扯淡,聊天当中把具体的经历都带出来了,免去了枯燥乏味的自我介绍 接着换了个语调开始念题目,我们知道有个定律是说世界上任意两个人之间通过7次关系可以找到对方,现在想象我们是FB,拥有所有人的朋友关系,现在我们要查询任意两人直接是否可以通过7次认识 答:我们先考虑数量级比较小的情况,大的情况可能会GG,得做优化。最直接的想法就是BFS,然后加上flag,对已经访问过的节点不重复访问(内心OS,直觉就是BFS,DFS大部分情况是BFS慢的,然而BFS也慢啊,先蒙一个) 追问:BFS有没有办法优化? 答:双向BFS,可以从两头开始BFS,就像两个圆,BFS的层数是它的半径,访问的数目是他的周长,两个小圆应该是比一个大圆小的 追问:你用周长来比喻好还是用面积来比喻更好 答:额,面积更好,周长不大对 追问:好,那我们现在的问题就转化了,假设我们两头都经过3次BFS,得到两个队列,那我们如何判断两个队列中有相同的内容?原来的问题转化成这个了对吧 答:对.....(内心OS,妈的,什么狗题,两个队列,这不得排序啊,nlogn啊,这还做啥) 需要精确查找吗,还是模糊查找就可以,因为我暂时没想到精确查找咋做,有个模糊查找的方法 追问:ok,你可以先讲讲模糊查找 答:可以上个布隆过滤器,它能够完成有相同一定找到,但找到不一定一定存在相同(面试官不太懂布隆过滤器,然后我解释了一遍,在此不再重复,总之是多次hash) 追问:好,那我们假设两个队列都是有序的呢 答:都有序啊,那2分呗,复杂度nlogn 追问:还有没有更快的 答:比二分更快啊..........哦,因为两个队列都是相对有序,第二数的二分可以从第一个数二分的ending位置开始,就是把第一个数所排除掉的内容不纳入第二个数的二分范围了(个人认为这个方法小于O(n+m)了,后面也与面试官进行了探讨) 追问:(微笑)还有没有更快的? 答:卧槽?比二分还快的,不可能吧...(内心OS,这么牛逼,比二分还快,这时候脑子已经开始混乱了,记不大清问题是啥了) 想了一会,一个平庸的算法冒出来了,一个一个比呗,第二数的起始位置从第一个数的ending位置开始比较,直接就是O(n+m)(后面 经面试官总结,这玩意有个名称叫归并排序,然而我只会暴力) 暴力半天后,突然灵光一闪,O(n)个屁,O(1)啊,把队列看作区间,头尾两个数作为区间断点,4次特判他们是否存在重叠关系就好了 后来经面试官指出,即便重叠也只能证明他们之间存在可能的相同变量,而不是一定。所以,最后还是乖乖的归并暴力 总结的时候聊了以下,用二分抛弃的做法,应该可以看作对暴力归并的优化,大部分情况是胜任的。 问:答的不错,那咱再做一道简单题 答:刚刚那道可属实不简单啊... 问:拆开看还是很简单的,BFS,双向BFS,归并都很常规嘛 答:... 问:建筑面做广告牌,标准矩形,求最大面积(leetcode 经典原题) 答:额...这题我做过,记得是用单调栈 问:(笑喷)那我不问了(我以为他要换一题) 这题我的思路是这样的,blablabla,你理解吧 答:对对对,我的是这样,blablabla 问:好,那我再问几个C++的基础问题 问:new、malloc啥区别 答:额...这个我前几天刚刚面过,blablabla开始背,背到一半就被打断了,大概是够了... 问:一个进程里头最多有多少个栈? 答:啊?多少个栈,不是一个栈就一个吗... 引导:那我们知道局部变量放在栈里,不同的线程可以访问别的线程的局部变量 答:(饼送到嘴边了)额,对,如果按照我一个stack的想法是可以访问的,那他应该是跟随线程的,一个线程配一个? 问:C++多态的虚表有了解吗 答:有,C++对象模式是这样,有个虚表指针,成员变量跟着,成员函数在外,子类虚函数会覆盖基类虚函数所在的位置完成动态多态 追问:那如果一个子类继承了多个基类呢,里面会有多少个虚表 答:额...难道不是一个? 引导:那我们知道子类可以向上转换成基类,多个基类的话,我们怎么转化? 答:噢噢噢噢,那是有多个,内存里面有多个虚表指针,然后虚表里头有个类似叫offset的玩意,来进行起始地址偏移,大概是这样,具体排布我记不清了 问:好,那再问一个,MFC的消息机制你了解吗? 答:不太了解,我都是查MSDN的 好,剩下就是反问环节了,大概问了业务和美国对接的问题,面试官给非常详细的说了,从整个大组讲到具体team,大概说了快10min,中间还给我带跑题了.... --------------------------------------------------------------------------------------手动分割线----------------------------------------------------------------------------------------------------------------------------------------------------------- 二面: 上学的时候老师说过,以后你可能记不得哪个老师教学能力特别强,但一定会记得和你一起扯八卦的老师。 二面的面试官不苟言笑,整场面试给人以深思熟虑,认真负责的感受,嘴角不曾泛起一丝波澜。 刚开始是自我介绍,然后一些形而上学的问题,比如你有啥兴趣爱好,你的优缺点是啥,你如何进行自我学习什么的,问题很常规,但如果你以严肃的态度问出这样的问题,就有种特别的魔力。 我企图逗笑一下面试官,缓解缓解气氛,但是失败了。 因为形而上学搞了时间比较长,我以为这面就是聊聊天,随便问几个简单技术问题就好了,但是后来证明我还是太年轻。 问:你对内存的划分有什么了解? 答:大概知道是用户空间和内核空间 追问:那内核空间在高位还是在低位 答:应该是在低位,因为他要兼容16位的系统,我猜是在低位(这里不对,应该来是说内存还有null指针区以及保留区,用来做内核空间和用户空间的隔断,且地位0x0000位置也是禁止访问的,内核区在高位) 问:应该不对,是在高位的 追问:那用户空间里头是怎么划分的呢? 答:额...我大概知道有heap,stack,静态变量区,常量区还有代码区 问:一个进程里头有几个heap,几个stack 答:(菜鸡如我,又掉坑)heap跟随进程,stack跟随线程 引导:不对吧,你如果在一个线程里头new了一个对象,然后在另一个线程可以delete吗 答:额...按我那样说确实不对,除非系统做了额外保护,所以应该是跟随线程 问:那你知道const和define啥区别吗 答:额...const和define是两个玩意吧,没啥相同的吧。define是个定义宏,比如define ll long long,而const是个修饰?有const 变量, const 指针, const 引用, const 函数四种用法,按照自己的理解讲了讲 问:那你知道vector吧?在vector中使用结构体有啥要注意的 答:(内心OS,这个问题搁面经看到过,当时没查出所以然啊,只能自己瞎编了,估计和写面经的人碰到一个面试官了,面经上还问了消息机制,这个哥们准备了,可以牛逼...然后面试官没问) 额...vector是这样,vector本质就是个数组,只是他是不定长的,他的机制是在申请的内存空间被使用2/3之后会重新申请2倍的空间,然后把内容拷贝过去,所以我们的自定义结构体需要拷贝构造函数,如果需要排序的话,还需要重载小于操作符。(事实证明面试官想问的不是这个,他应该是想说对于template来讲,不能够使用局部变量,要用全局的定义吧...但我确实不会) 追问:那这个2/3是怎么来的? 答:额...我只记得这个数,怎么来的我没研究过 追问:好,那我要设计一个结构体,让他无法出现在stack要怎么做 答:还能这样做....?局部变量是放在stack的,难道我把构造函数禁了?那也无法new了啊...我想想哈 引导:换个说法吧,我要设计一个结构体,让他无法出现在heap要怎么做 答:哦哦哦,把new 或者 malloc禁了在结构体里 噢噢噢噢,我知道stack了,在结构体里头另起一个变量,把构造函数做private,暴露一个函数,把所有的局部变量都转换成new来申请空间,大概这样,对不对? 问:差不多这个思路吧 答:脑壳疼.... 问:postmessage 和 sendmessage啥区别? 答:post丢到消息队列就返回,不等结果,send要等结果 问:一个程序(窗口?)只启动一个实例怎么做(用什么函数?) 答:题目记不大清了,答的不好。讲了下对于驱动来说,我们会给他起个别名,像符号连接名这样,这是唯一的,然后调用create方法的时候,会自动去查找是否有相同名字的以及启动了,如果有就直接返回一个类似handle的东西,如果没有才启动,windows用户态应该也是类似。(这里应该没答到点上,那时候就想到单例和这个,然后只答了这个,其实注册表写东西,往文件写东西应该都是常用方法) 问:我要启动一个三角形的窗口用什么函数 答:这个真不会... 问:__stdcall和__cdcel 调用方式上有什么区别 答:这个...我大概只记得他们是C编译和C++编译的区别了,然后一个函数比如FOO来说,__cdcel是编译成FOO@8这种格式然后__stdcall是翻译成FOO@ii这样的格式的 引导:这是多态的支持,调用上什么区别,比如参数入栈 答:参数入栈都是从右到左放到栈里面的,然后再把返回地址丢到栈里头去,然后调用函数,被调用的函数再来用栈顶+8,+12这样取用参数的,一半是放在eax这个寄存器里头的.... (很明显没答到点上,面试官是想问处理栈平衡上的区别...我确实没用心记这玩意) 问:C++11 了解不 答:只了解一些智能智能和右值引用 追问:智能指针说一下 答:blablablabla 问:伪函数了解吗 答:只懂概念,没用过。类里头重载()操作符,可以实现传递操作,与函数指针的区别没研究过... 问的问题比较多,有些问题记不住了,以至于二面问题的连贯性较差。最后反问我还是问了老问题,业务是咋样,两个面试官讲的差不多,举得例子也几乎一致。 最后面试官总结了以下,C/C++ 基础还不错,windows编程(Windows API?)缺一些,然后问了问我上一份工作的工资以及通过了啥时候能到岗,一周内会给我答复...(听着像是会有好消息吧:D) PS. 这个面经写的真累,脑壳痛。 --------------------------------------------------------------------------------------手动分割线----------------------------------------------------------------------------------------------------------------------------------------------------------- 终面: 本来是说终面由杭州的大BOSS出面聊一聊,大致就是20min,大致就是混一混脸熟,不会问太多技术问题。但是大BOSS临时有事吧,换了一个交叉面的leader,而且可能怕我误会没有提前通知,导致终面重回二面的状态,而且还是突然袭击,问了相当多的技术问题。 交叉面的leader和前面的面试官比起来更重视应用和调试经验吧,与本组的面试官风格不太一致。 问:vector 中要删除2个元素(多个元素)要怎么处理 答:vector中有两种删除方法,remove和erase,remove是把元素放到最后,不释放空间,erase释放空间,会造成迭代器失效。最保险的方法是每次删除从头开始++,然后找到要删除的位置开始删除 追问:(笑) 那这个复杂度太高了 答:对,太高了,那我们可以保存我们要删除的迭代器前面一个迭代器,然后用前面一个迭代器继续更新操作,或者把要删的remove到最后,一次性再删除 追问:这不是标准做法,你一会可以去查一下 答:好(很久没用erase了,简单查询后发现,erase会有一个返回值,拿这个返回值直接处理就行了) 问:C++ lambda表达式了解吗 答:没太用过 问:类的拷贝构造函数了解吗,什么时候会调用? 答:额...拷贝的时候会调用?具体来说就是我们已经有了一个实例化的A,然后要完全复制这个A的内容,形成一个B,这时候就会调用拷贝构造函数。然后,拷贝构造函数的形参是const 引用,这样可以防止修改,也可以防止出现递归调用拷贝构造函数的情况 追问:指针和引用啥区别 答:引用就是个别名,没有自己的地址空间,指针是有自己的地址空间的。引用不可以为空,而指针是可以为空的。 追问:那你讲讲智能指针 答:blablablabla 追问:浅拷贝和深拷贝的区别 答:浅拷贝和深拷贝都是针对指针的概念,浅拷贝指向同一片内存,深拷贝把内存也拷贝一份,指向不同的 追问:现在我们有一个类A,A的里面有有个成员变量也是自定义类B,这时候我们要重写拷贝构造函数,要怎么做? 询问:成员变量B是一个指针还是就是一个普通的变量? 追问:是一个普通的变量 答:如果是一个普通的变量那不存在浅拷贝,只有深拷贝 追问:那他是一个指针 答:浅拷贝只要正常操作,声明一个指针指到B就行,而深拷贝需要声明一块空间,然后调用B的拷贝构造函数,再把指针指向新的内存位置 问:异常怎么处理 答:throw出来? 追问:具体一点系统和用户态都需要怎么处理? 答:系统会保存我们当前这个造成异常的汇编地址,可能是保存在stack里面,如果这个异常被正确处理了,系统会回到这个地址再次执行这条语句,然后接着干活。对于用户态程序来说,可能要注意把我们声明出来放在heap里的东西释放掉? 追问:大致是这样 答:后期没有去查询,有点累了...有朋友知道更详细可以说一哈 问:stack和heap啥区别? 答:stack放局部变量,heap放new出来的玩意。stack要连续,heap可以不连续 问:虚函数和纯虚函数什么区别? 答:纯虚函数无法实例化,子类必须实现纯虚函数,类似Java指针,虚函数可以被实例化,不一定要被子类覆盖实现 追问:对象模式你说一下 答:blablabla,见一面 追问:继承两个不同的基类呢 答:blablabla,见一面 问:我们知道程序奔溃后会形成一个core dump文件,如果不能使用windbg那我们要怎么查找问题? 答:额...如果不能用windbg,那是不是stack被踩塌了,那我们只能根据esp寄存器来找它的调用顺序了,然后打log,找出哪里崩了? 追问:对,这是比较复杂的一种情况,dump文件损坏了,这可能查不出来,那如果没损坏呢 答:没损坏直接windbg啊 追问:对,那不用windbg呢 答:额...你是想问windbg解析dump文件的原理啊 追问:对,看看你有没有做过 答:额...我没用过,我大概猜是这样,汇编里面的调用函数多会用到esp寄存器,然后被调用函数会临时保存esp的值用到ebp寄存器,返回值多在eax寄存器中,大致是抓这几个寄存器的值吧 追问:额...差不多,是这几个点,理论对了,但是理论和实际操作还是有一些区别 答:对... 问:windows API的调用过程说一下 答:大致是这样,我们使用的API 多是win32 API,然后win32 API 会调用Native API,由Native API开始陷入内核态,调用具体的内核外围组件,然后有需要的话再调用内核 问:windows 消息机制 答:windows是消息驱动或者说事件驱动的,有两个消息队列,一个是系统消息队列,消息先进入到系统消息队列,然后由系统消息队列分发给对应的进程。另一个消息队列是进程中的,如果进程启动了一个窗口,他就会有消息队列,然后他是以消息循环的方式,从消息队列中取出消息,发给窗口。这个是让权等待的,如果消息队列中没有消息,它就让出CPU 追问:消息循环怎么实现的?用了什么函数? 答:起一个线程一直while?用getmessage 追问:具体一点,拿消息后怎么做? 答:额...根据消息的title或者消息头之类的,dispatchmessege吧 追问:消息循环怎么终止? 答:额...大概有个进程终止信号,或者终止消息进到getmessage,然后特判一下把进程杀掉吧 追问:postmessage和sendmessage什么区别 答:blablabla,见二面 问:你们平常多人协作开发吗 答:额...什么算多人协作,用git就算吗? 追问:用git也可能大家领个模块去干就好了,比如你会去修改别人的类吗 答:很少,我一般使用别人的类,如果要别人的类增加功能,我会和他打报告,让所有者帮我增加代码(这里加上设计模式的 开放 - 封闭 原则会更好) 问:如果对同一个功能有两个方案A、B,你会怎么做? 答:额...开会讨论啊,然后确立一个方案,开始干活 追问:(微小) 还有吗 答:额...这只有两种可能吧,一种讨论确立,另一种两种方案分开干 追问:分开干不大现实,太花时间了(腾讯不就是这样,养蛊政策) 追问:那这样,你设计了A方案,同事设计了B方案,你们一直讨论一直争吵怎么办? 答:找领导拍板啊,每个功能设计肯定要有一个最终能够下决心的人 追问:领导用了B方案,后来开发途中各种,你就一直说早就知道有问题,应该用A的 答:这时候只能闭嘴吧,开会时啥都能说,开完会啥都不能说,只能干活了吧。 好,你有啥想问我的? 在zoom拥有什么样特质的员工能够得到更好的发展,或者说我们zoom在招聘员工的时候更愿意要什么样的员工? blablabla,更多要求技术吧。 然后切了HR聊天,HR非常非常非常能说,咕噜咕噜嘴巴不停的,也不需要喝水,我坐着听都听得口干舌燥,补了好几次水,HR都不用的,后来还是HR临时要接另一场面试,才结束的... 最后忘记问问HR学啥的,这么牛。 最后这场面试过去的时间虽然不长,但很难记忆起技术官具体问了什么,可能太散乱了吧...
点赞 43
评论 8
全部评论
推荐
最新
楼层
滴滴
校招火热招聘中
官网直投
相关推荐
JAYJas
05-16 12:10
北京理工大学 电子信息类
offer还愿,已经开始在招银的实习啦!
本周入职招银实习啦,来牛客还愿~现在真的很卷啊,春节后就开始准备暑期实习的事情,各种刷题看面经,三月初开始投简历,投了一堆公司,最后就拿了4个offer,选了招银(听说转正率挺高的)。接下来就是好好表现,希望能有转正机会,不实在想去秋招卷了。。。后续有时间就再给大家反馈实习体验,祝大家都能拿到心仪的offer!
投递招商银行·招银网络科技等公司6个岗位 >
点赞
评论
收藏
转发
chenxi同学
04-02 12:18
西安邮电大学 计算机类
面试最难绷的一集
今天面试到最后的时候,面试官说,来写道算法题吧。哥们打开链接一开,环形链表?狠狠拿下😋结果因为力扣上有以前写过的代码,面试官说你以前做过了吗,那我们换一道吧。整了一道字符串相关的,一点思路没有😇大伙一定要记得清空力扣的做题记录😭
点赞
评论
收藏
转发
神奇小赛尔
04-07 20:08
已编辑
美团_测试开发(准入职员工)
家没了,兄弟们
正写代码呢,发现家被拆了提前实习短租了个隔断,然后被举报了,叔叔们进来就拆,之前提醒了二房东,说没事放心住,然后今天就被拆了,中介不想负责,说只给按比例退房租,还有不到20天我就离职了不好找新的了,短租一个月的话中介加上房租费一个月基本白干了,兄弟们怎么看,势单力薄只能忍气吞声吗
点赞
评论
收藏
转发
如梦幻泡影
05-14 17:37
北京航空航天大学 机械类
简历要突出、简洁,贴合公司需要
一、重点突出 突出学历、科研经历、竞赛成果、实习经历和成果、奖学金、专业技术二、界面美观 颜色不要张扬,简洁,不乱,有逻辑三、对症下药 不同的公司要求不一样,投递不同公司时,考虑适当修改内容和风格,更贴合专业公司的需要
我的上岸简历长这样
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
全站热榜
1
...
开摆了,写小说去了
8016
2
...
没offer的我们也很优秀偶
6172
3
...
【有奖活动】浅聊一下我的实习⭐
5993
4
...
华为暑期开奖
5815
5
...
华为实习offer!终于告一段落了
5504
6
...
双非本 腾讯WXG暑期已offer | 附面经
4671
7
...
滴滴秋储-服务端开发 OC
4633
8
...
快手二面凉经
4024
9
...
美团前端一二面(已oc
3744
10
...
5.20携程笔试
3729
正在热议
#
牛客帮帮团来啦!有问必答
#
817926次浏览
13003人参与
#
机械制造薪资爆料
#
319625次浏览
3729人参与
#
晒一晒我的offer
#
3462836次浏览
55231人参与
#
0offer是寒冬太冷还是我太菜
#
427328次浏览
4928人参与
#
你觉得找工作该拿大厂还是小厂练手
#
61457次浏览
870人参与
#
荣耀求职进展汇总
#
70420次浏览
717人参与
#
如果可以选,你最想从事什么工作
#
185772次浏览
3072人参与
#
实习生应该准时下班吗
#
80640次浏览
591人参与
#
金三银四,你有感觉到吗
#
328663次浏览
4214人参与
#
海康威视求职进展汇总
#
101417次浏览
1216人参与
#
正在春招的你,也参与了去年秋招吗?
#
136347次浏览
1705人参与
#
实习必须要去大厂吗?
#
13768次浏览
218人参与
#
实习工作,你找得还顺利吗?
#
42246次浏览
468人参与
#
我在牛爱网找对象
#
49117次浏览
312人参与
#
软件开发投递记录
#
478856次浏览
7240人参与
#
宁德时代求职进展汇总
#
36997次浏览
412人参与
#
国企vs私企,你更想去?
#
20248次浏览
205人参与
#
求职遇到的搞笑事件
#
19605次浏览
287人参与
#
想实习转正,又想准备秋招,我该怎么办
#
117508次浏览
1327人参与
#
正在实习的你,有转正机会吗?
#
106225次浏览
1043人参与
牛客网
牛客企业服务