笔试&&面试经验程序员面试的那些小事面试者说

趋势科技、美团、小米、网易互娱offer面经

2017-10-03  本文已影响280人  九风萍舟

前言

经过六月到九月这几个月的努力,九风有幸拿到了趋势科技、小米、美团、网易互娱的offer,之前看了好多分享的面经,是时候该回馈了一波。

先介绍下九风的基本情况:在导师的创业公司待过一年多(没有课就去公司),做过C++图像处理、java后台开发、移动web开发,由于自己比较水,学的东西都不深,在7月初离开公司后就猛补基础知识点。

艰辛经历

九风在校招七月初就开始投简历,没有统计过投过多少家,基本把牛客网上的可以投的公司全部投了一遍,投了简历的至少有60家公司;笔试也不知道做了多少了,至少有25家的笔试,最后收到的面试情况:

其他公司:百度、头条、京东等这些公司挂在笔试上了,360、搜狐、搜狗、美丽联合等直接挂在简历上了;

对现在的offer情况比较满意,准备结束秋招;先感谢给我offer的面试官,找工作真的是很看运气的,碰到好的面试官会一步一步引导你,碰到风格不搭的面试官那就有点难受了;然后感谢一起找工作的小伙伴们,一起学习一起进步,多交流面试经验,少走了很多坑;也谢谢很多牛友分享的面经;

准备校招的还是蛮辛苦的,九风7月份开始基本都是7:30起来刷编程题刷到8:30吃早点去实验室准备其他知识点,中午午休前半小时刷编程题,晚上回去洗澡后刷编程题到12:30左右睡觉,没办法,基础不行只能靠努力来补;由于智商还是不够用,最后也只把牛客上的leetCode题刷完了而已,看了几遍剑指offer,这两个都是神一般的存在,算法题就靠这两个。

九风想对小伙伴们说:

面经

  1. 如何检测内存泄漏
  2. 讲讲智能指针
  3. C++容器有哪些
  4. list 和 vector有什么区别
  5. 讲讲大端小端,如何检测
  6. public 和 private 关键字,在继承中有什么区别
  7. 设计一个内存分配类---参考STL中空间配置器
  8. 现有一个程序需要申请的地址是要求起始地址必须是16的倍数,如何设计----将申请大小上调至16的倍数,那么最多会浪费15byte空间,真正存储从16byte倍数上开始利用。

电话二面: 9.12号, 挂了。 不过这个要吐槽下,约的2.30, 等到下午5点才打电话过来,等得心累;

  1. TCP三次握手
  2. http状态码,403是什么
  3. http 与 https的区别
  4. 智能指针,shared_ptr 内部实现
  5. IPC通信有哪些
  6. 多线程的死锁,死锁避免(讲了银行家算法额思想)
  7. Vistual Studio 怎么调试,如何设置条件断点
  8. JVM 内存回收
  1. tcp、udp的区别
  2. spring 依赖注入
  3. 面向对象的特征,讲讲多态,什么是多态?
  4. 进程与线程的区别
  5. 什么是信号量,信号量与信号的区别
  6. 依赖注入
  7. 怎么创建索引
  8. 知道哪些设计模式,工厂方法与抽象方法的区别
  9. 怎么统计char二进制中1的个数
  10. sizeof 与 strlen的区别
  1. 挑一个最拿手的项目讲
  2. 面向对象的基本特征:封装、继承、多态;
  3. 析构函数能不能用virtual
  4. 引用与指针的区别
  5. 引用必须初始化,先在要设计在一个类中如何初始化引用:
    class A{
    int &a;
    }
    如何给a初始化?
  6. static、const、virtual结合使用情况,以下几种可以么:
    static void fun(){};
    static void fun() const {};
    static virtual void fun() const {};
    static virtual void fun() {};
    以上四种函数可以这样定义嚒? 为什么?
  1. 进程与线程的区别
  2. 数据库索引为什么用B+树而不用B-树
  3. spring mvc 的处理流程
  4. 访问一个网页的具体过程
  5. 手写单例模式
  6. 手写数组合并
  7. java线程安全了解么
  8. hashmap、hasptable、concurrenthashmap的区别,concurrenthashmap如何实现高并发?
  9. 知道哪些NoSQL,讲下redis,redis的实现原理,redis怎么实现高并发?
  10. C++如何处理异常,异常向上抛出抛到最上层是什么情况?
  11. get、post的区别,什么是幂等性,put和post的区别。

现场二面: 过了

  1. tcp三次握手,第三次握手的时候如果直接发送数据会怎样。
  2. 一个http请求的具体过程以及具体的协议,越详细越好,dns的查询过程
  3. 设计一个订单,同时有多个骑手抢订单该如何设计,有多个服务器处理请求要怎么处理?
  4. select、epoll的区别,什么时候用select,什么时候用epoll
  5. 讲项目
  1. 讲下快排
  2. 手写插入排序
  3. 进程与线程的区别,如何创建多线程、如何创建多进程。
  4. IPC通信,会问你自己实际使用过不
  5. socket编程过程
  6. vector实现原理
  7. 如何实现vector 在扩容的时候不进行新的空间申请,即不想有扩容操作,该如何设计? --- 从operator new和placement new方面来讲。
  8. 如何将一个序列均等分为两部分,使得这两部分之和尽量小-----没做出来,比较尴尬。

现场二面: 过了

  1. 全程讲项目
  2. 最后出了个题:在王者荣耀中(干嘛不说阴阳师中呢)如何统计全服中所有玩家阿轲这个英雄的胜场排名?

呀呀,到了神奇的9.22这天了

神奇的9.22号

  1. 全程问项目
  1. 把一个项目用通俗易懂的语言讲懂给她听
  2. 如何处理同事关系
  3. 一个人不会在公司待一辈子,你会出去创业嚒?---坚决咬定不会,美团特别好,留在公司做贡献
  4. 为什么来美团?美团的价值观是啥
  5. 你选择offer的最重要的两个因素

24号发消息说进入录用池了,28号打电话询问手里offer情况,然后定薪资, 30号打电话说薪资情况,要决定是否接offer,我说考虑一天,31号打电话回去把offer拒了,机会留给小伙伴们,小伙伴们加油。

10:50才发现趋势科技也是上午面试(以为下午面试),赶紧跑过去面试现场。

  1. 根据简历上写的项目、技能来问你是熟悉还是了解,你只是自己用过而已嚒?你不是自己从底层设计的哦,那就不用说了!!!!
  2. 讲下项目,给我项目中的问题看我怎么解决。
    这个一面的面试体验比较不爽,不问里面的具体技术,只问是不是只是用过,也不让讲深入一些的知识点,感觉你要是自己设计出来一个类似的东西或者深入研究过源码才行或者修改源码才行一样,给我的感觉不爽,不过还是感谢让我过了。

12:50 现场二面

  1. 讲项目
  2. 写一个字符串拷贝函数,你这个会出现异常嚒?怎么改进?
  3. 简单英语口语交流

13:30 hr签offer
当时就问了要不要违约金,然后就签了,当时到手的第一个offer,其他都还没信,心里老高兴了,准备好久,终于有个offer,差点就蹦起来了!

2:30 吃完饭后看到小伙伴有去小米霸面的,我也凑个热闹就去了...,第一次去霸面百度,百度没鸟我,觉得霸面应该没机会,不过小米还是支持霸面的,面试体验不错,赞一个(小米面试的酒店要刷卡才能进某一楼层,我上它们面试的上一层楼上,想从消防电梯走,结果进了消防电梯到了面试楼层发现要刷卡才能出消防楼层....,然后尴尬的打电话给小米hr姐姐来解救我们。。。。 当时好尴尬)。

  1. 先写个堆排热热身吧!!! 有点忘了,然后自己画图,根据自己的图来写过程,面试官看了两次都说不急,你慢慢写,我哪敢慢慢写,赶紧写完就给面试官了,有些错误,不过总体思路是对的。
  2. 统计逆序对个数,我记得剑指offer上利用归并的思想将原序列分成前后两个序列,分别统计两个序列中的逆序对个数,再统计两个序列中的逆序对个数,然后再合并继续的思路;我把思想说了之后面试官就让我手写代码,写好之后他看下了应该是对的。
  3. 还手撸了一个算法,不太记得,不过没上面两个难,面的不好,全程手撸代码,不过让我过了,真是开心。

中间在等二面的时候跟hr姐姐聊天,漫长的等待中。。。

现场二面:

  1. 二面面试官看了下我写的堆排,然后让我讲了下STL中的空间配置器,问了为什么自由链表中的是8byte的倍数?
  2. 问了那个刚开始那道题: 如何在一个队列中记录当前队列的最大值,这个跟那个栈的最小值有点相识,不过这个难一些,我用那个栈的思想说下我的解决思路,然后面试说你确定嚒?我说我看下,然后自己发现了问题,就把自己发现的问题跟面试官讲了下,然后讲了我那个解决方法的思想就是那个栈的最小值演变而来的;之后面试官提示我pop、push、getmax这三个方法都是O(n*lg(n))的时间复杂度,我说用堆嚒?他说堆插入的时间复杂度比较长,我思考了下说做不出来。
  3. 最后问了那个逆序对个数的时间复杂度,让我手推公式,我也没推出来,然后面试官在我面前手推了一把,然后就结束了。。。。。。。

二面面完后出去跟小米hr姐姐说我挂了,然后hr姐姐说我过了,呀呀,说了谢谢就去按电梯下去了,按电梯的时候接到网易互娱的通知说过了, 当时就蹦起来了。下了楼之后一看时间已经是晚上8:30了,辛苦了这么久终于有点小成果了。

  1. 自我介绍,然后面试官说来个自我介绍,说他就问点基础!!!
  2. 写个二分查找--这个倒是很基础
  3. 现在多个活动,有多个开始和结束时间,计算出其中某个时间有最多活动的个数, 当时脑袋发热,这个没想出来,我记得是做过的。
  4. 知道一致性hash嚒? 设计一个一致性hash。 我讲了点概念,说要用到虚拟节点,这样可以负载均衡(自己给自己挖坑)
  5. 讲下负载均衡吧----懵了,讲了同学的cdn当时的负载均衡项目,有点懵逼。
  6. 讲下epoll的内核实现吧----红黑树、就绪队列
  7. 讲下linux的内存管理吧。 我:有点忘了,不太清楚您是要问哪方面,是虚拟地址空间还是进程调度方面的,能提示下嚒? 面试官:不行。 我:一丢丢就行了。 面试官:我们换个问题吧。
  8. 讲讲数据引擎吧, 我:有inodb,还有一个另一个忘了叫啥了,inodb是用的B+树做索引,另一个好像用的B-树(这里记错了,也是用的B+树做索引), (我心里想,你问我B+树、B-树吧的区别吧,以及为什么要用B+树之类的,然而并没有问)
  9. 面试时间差不多,你有什么要问的, 我问了问常问的问题(心里:怎么不问B+、B-树的区别)。

晚上回来一查妥妥挂了,好气哦,说好的问基础,C++基础知识一个没有,感觉应该那个活动的编程题做出来了会好很多,当时脑细胞转不动,实在想不出来,还是自己掌握的不行,继续前进。

腾讯挂了之后,我就结束秋招了。 还在路上的小伙伴们加油,机会总是给有准备的人的,如果机会还没到你,要么就是真正的机会还留在后面,要么就是你还没准备好!

总结

C++基础知识点:

  1. 面向对象的特性;
  2. 多态: 重载、虚函数, override、overload;
  3. 继承中的private、public; class 与 struct的区别;
  4. 内联函数与虚函数;
  5. 指针和引用;
  6. static 和 const;
  7. 智能指针;
  8. 宏和const 、 inline;
  9. 构造函数、析构函数、虚函数、拷贝构造、赋值操作符;
  10. new与malloc;
  11. 进程地址空间内存分配;
  12. strcopy、memcpy、memmove;
  13. 内存对齐;
  14. 类型转换;
  15. 单例模式:
  16. sizeof 与 strlen的区别;
  17. 深拷贝、浅拷贝;
  18. 静态链接、动态链接的区别;

C++ 进阶知识点

  1. STL 空间配置,具体实现过程,如果内存自由链表中没有空间会怎么处理,如果内存池中没有空间会怎么处理,如果heap中没有空间会怎么处理,为什么自由链表中的倍数是8byte,而不是其他。
  2. vector 的实现,如何实现不发生拷贝到新空间就只在当前空间扩容(new operator、operator new、placement new),vector的内存时如何分配的(空间配置器)
  3. set、map的底层实现,红黑树的概念,红黑树的插入(删除太复杂了,能把插入搞清楚就可以了,很少问到这一层次了)

最后的最后,祝小伙伴们都拿到满意的offer!

上一篇 下一篇

猜你喜欢

热点阅读