前期准备:
- 关于刷题:刷题不多,leetcode有150+道,8月就没刷题了,我是按照leetcode tag 标签刷的,有链表、树、二分查找、hash表、堆等分类标签,我刷题完了在个人博客上记录了一些当时刷的题,偶尔会回顾一下(非常偶尔)。。个人leetcode题解
- 关于语言: 其实读研,没搞什么研发的高大上项目,有个java 的水项目。对c++我也只是停留在课程设计水平。。所以准备看看java. 相关的书就是《深入理解JVM》, 《java并发编程的艺术》。。我个人没咋看,就看了几章JVM, 其余时间看了点java面试题。 所以java岗的面试,我很吃力。。。那些不怎么要求语言的,还能对战几面。。。
- 关于计算机基础 操作系统问的多(进程线程,通信),网络(TCP UDP HTTP)网络编程(selector, poll , epoll )
- 关于偷懒 偷懒的我,好多东西都是在面试中学会的,因为自己基本处于焦虑状态,专业书本也看不下去。。总结下面试,很多时候也有重复的问题的。好多次面试都出什么大文件里查找的问题。再就是看《剑指offer》 《程序员面试宝典》,会发现很多面试题似曾相识呐。。啊哈哈哈 面试官陪你一起写算法题,感觉也是一种锻炼和提升。。
- 关于小技巧 面试过程中,遇到会的算法题,不要写的太快。假装有个循序渐进的思考过程。有的面试官可能不看重你是否做出来,而是看你思考的过程吧。 另外面试官一直否定你的时候,气场千万不要弱! 如果他是真的不看好你,你再低姿态也没用,反而自己不开心。 万一他是考验你的自信心呢? 如果 我再遇到面试官一直叹气质疑你项目太简单,技术过时的话,我会首先承认在学校确实和企业有差距,但是IT技术本来就是日新月异的,我有学习能力,我之前都能搞出来,新东西肯定也能很快搞定呐!一定要相信自己!!绝对不要怂!
春季实习面试
2017微软转正实习生
第一面没问算法,直接问项目,首先我解释了几个课程设计,后来按着机器学习一直问。。没怎么回答好。。后来讲了一下简历写的个小游戏。
二面开始问我迷宫查找怎么实现的,就是深度优先和广度优先的搜索。问了俩算法,比较简单:一个是树的层序遍历,另一个求经过root的两个树节点之间的路径长度。手写代码,讲思路和测试用例。另外引申了一下求两个节点的不经过root的最短路径长度。我说要求最近公共祖先,但是代码还没想出来咋写呢,时间也差不多,就结束了二面。
三面竟然问一些语言特性。。java hashmap 和 hashtable的区别(线程安全)。。c++ virtual, 析构函数,重载重写。按着线程安全的问题问啊问。。我就知道互斥锁。。最后给看了一个c语言strtoken函数的定义,然后白板实现。自我感觉这个函数写的差不多,就是前面一些语言特性没回答好。。 对了,因为strtoken 不是线程安全的,面试官又问我该咋办。。我又只能回答说加锁。。。。。。
微软的消息等了太久了!!备胎一个月了,苏州那边打电话问我能不能去苏州实习。。然后说不太可以。。毕竟学校在北京。。然后GG了。。现在后悔,不该为了怕导师而拒绝微软啊,校招的时候实习经历还是比较有分量的。
小米实习面试
1 最近公共祖先。 如果有parent 指针, 相当于求两个链表的交点了。如果是普通二叉树就递归判断。 当初没好好刷题呀。leetcode.com/problems/lo…
2 旋转数组二分查找
最后小米实习去了一周。迫于导师淫威, 怕怕地辞职了。太怂了。。而且等我辞职后竟然放假了并且导师也对我们找工作放水了!! 又心塞!!!
头条实习面试
一面挂。 问求第k大个数字。用快排写的。 写的比较慢。 又问项目。感觉没亮点。 挂!
内推秋招
百度复合搜索提前批面试
- 一面: 进程线程,三次握手,死锁以及怎么处理。项目。 算法题:两个链表求交点
二面: 1) 智力题, 一个密码锁有6个数字, 求不小心拿反了还是正常数字的概率;求不小心拿反了和拿正的数字一样的概率 2)算法题,一个数组 1-n 中缺失了一个数字。查找到那个数。 我用二分查找做的。 3)面试官感觉不懂机器学习, 让我讲了下svm, 给她说了下原理。
三面:部门经理,有点傲气。。喜欢打断人说话,问职业规划之类的(职业规划真的会有很多人问到,好好准备)。问有没有男朋友(懵逼),问对头条和百度的看法。 问遇到困难怎么解决,我一不注意说Google一下。。然后马上意识到啊这是在百度啊。。接着添上 或者百度一下。。。
最终说两周给消息, 也没给。挂了!!/(ㄒoㄒ)/~~
360中科院专场
面试真的靠缘分和运气吗,感觉水过的。
一面问,写个atoi吧,考虑好各种情况。 我就写。。刚写了两分钟,面试官忍不住了,你咋写这么多。。。我说我得考虑充分啊,他说别写了讲讲吧。。。就讲了下。然后又问,编辑距离知道吗?我说动态规划,刚要写,然后他说好,知道了不用写。然后问了下svm,gbdt 的东西, 就过了
二面说,山东人啊。。360好多山东人呢。。哎你这项目都是工程的呀,咋来找算法,我说因为热爱 = =(内心:我就是试试看啊)。 没写算法题,聊了聊项目,问svm 折页损失公式,并问L2正则作用。竟然过了(黑人问号??)
三面hr: 自我介绍,优点,对360的了解, 对人工智能研究院的了解。。。
目前状态是进入offer(备胎)池, 据说360以往也是这样的情况,会有很多人选入备胎,有效期到年底。据说有师姐在备胎好几个月后收到了360offer...所以大家保险起见,不要觉得360三面过了就稳了。。基本当没有这个备胎。。
百度本地凤巢
一面:由于我简历写的熟悉java, c++略懂,他就问了下简单的c++的语言特性, const 关键字。面试官很nice,告诉我别紧张。。就想了解一下我会的东西。然后问了排序,按某种分类把排序算法分类一下。我按时间复杂度分的。后来又问了下各个排序的原理讲了一下。 算法题:记不太清了,就是一个二叉树遍历的变形,输出二叉树中路径尾节点能被5整除的路径?写了个递归的,又问非递归的。。大致说了下。他问,是不是刷题挺多。。我说,大家都会刷一些吧。。。问用linux开发吗?我说写过c/c++ makefile。 面试官就噼里啪啦记录。
二面:shell 命令。。不熟, 问怎么用shell脚本写内存监控,直接说不会。 后来又让我用shell查找统计一个文件里的几行记录,我说我用sql吧。。。。面试官无奈地点头了。后来问 linux 读文件的时候内核发生了啥?然后问了selector, poll epoll... 当时都没看(现在也没来得及看 = =), 就记得selector 监控多个io通道啥的,大致说了下。 算法题: minstack. 参见剑指offer,但是第二个栈不用每次都push min
三面:开放题。 问了搜索相关的。 问好多url,里面可能有好多重读字段怎么存储。开始说前缀树,想了想,说先按照? / 分词, 存储倒排索引。面试官莫名觉得我不错,但我自己感觉二面三面答的都不好。
最后百度提前批只有这一个部门过了,然后百度提前批一般是面试通过后经理或者hr要你身份证号,通知你9月初笔试。笔试通过后10天左右告知。9月底会发正式offer,告知薪资之类的。
百度金融
- 一面 java 内存结构, 程序计数器存的啥?为啥建立连接三次握手,而释放连接要四次挥手?(把过程说了下,说四次挥手是因为服务器还要发数据给客户端,发送完毕后还要确定一次,不知道对不对)算法题:1)两个字符串中,一个字符串相比另一个字符串少了一个字符,找出来这个字符。 我说排序后用双指针或者hash表,写了代码。2)算 a + b, 不能用加号或减号。说了用位运算,但是进位那里卡壳了,正确答案见blog.csdn.net/unimen/arti…
int add(int num1, int num2)
{
if (0 == num2)
return num1;
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
return add(sum, carry);
}3) 二叉树中序遍历,递归 非递归都写了遍。。。
二面, 问项目,然后看到我有个模拟挖矿(比特币相关的东西)的小应用,和金融比较相关,就简单介绍了下。以为我懂区块链之类的,然而并没有。算法题!链表带random指针深拷贝的问题!! 我竟然忘记咋做了,一直在想不用hash表的那种算法,最后面试官提示可以用额外的数据结构,就说了用hash表存原节点和新节点的关系。完整答案:www.cnblogs.com/chrischennx…
三面 人生理想,职业规划,性格优点。 然后说我不大自信。以后面试要自信
链家
5个笔试题,现场笔试后再面试。
笔试
1 数组中超过一半的数。 blog.csdn.net/lskyne/arti…
2 括号是不是合法匹配, 用了个栈
3 m个连续珠子有n个不同的颜色,求最小包含n个颜色的连续珠子长度 blog.csdn.net/zhccl/artic…
4 一堆ip访问记录(ip, 时间),如果10分钟内连续访问超过1024次就是非法的,找出这些非法ip
5 判断循环依赖。(图里是否有环,应该是用拓扑排序)一面: 线程有没有自己的独立资源? 三次握手过程。 b+树 data存在哪?(叶子节点),叶子节点有联系吗?(有,链表相连的形式)为啥?(方便遍历,区间查找) 你觉得笔试题能答多少分?我说七八十吧,他说差不多。说他觉得没啥问题了, 问了解链家吗,我说。。租房卖房的吧。。。北京好多门头店啊。。。最后又说链家技术不错。。
二面: 鄙视我的项目,觉得太简单。。 哎, 我也知道啊。。我也很绝望啊。。。写了个sql,问职业规划,我说做搜索相关的吧。。他说链家没有。。我说比较偏算法的研发吧,他说这说法好虚啊。。。最后说 嗯你等一下我考虑一下吧。。。然后过几分钟给我挂了。 感觉职业规划真的挺重要的,虽然之后不一定按自己说的做,但还是要大致有个规划,让面试官觉得 你这个人是对自己负责的。 所以我职业规划是什么,我研究生上的这么杂我也很绝望啊。。。。
网易有道
算法岗, 不match. 看我简历后,说他们主要是搞深度学习,象征性地问了几个算法题。记得一个题大约是:
www.cnblogs.com/huangwei102…
百度运维
数据库索引 用了什么数据结构, 和红黑树区别
hashMap 初始化多大, 什么时候重新扩容
两个链表判断是否有交点
翻转字符串 in-place "how are you" 转成 “you are how”
三次握手; 四次挥手什么时候是在 time-wait 状态
http 协议组成部分
jvm 垃圾回收, cms 收集器
elatic search 索引合并?
线程 interrupted 是进入什么状态
读写锁 : 读写锁特点:
1)多个读者可以同时进行读
2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)
3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者)
jvm OM 异常 通常是怎么个情况, 如何调优。。。
然后电话面试完就再没消息了。。
华为优招
啥也没问基本。。聊项目也有没有引申出一些知识点
祖龙娱乐
1 给一个java 程序,说出执行期间,jvm各个内存存储数据的变化,包括各个变量存储在哪,对象构造的过程,程序计数器,栈的压栈返回过程。然后评价我答的不太具体,只是说了各个数据的存储区域。
2 申请了很多 对象, 会出现什么问题? 各个内存区域都有可能因为什么而出现问题?
3 垃圾回收算法
说了eden和 survivor 后, 让具体描述那个 8:1:1 怎么复制回收的
4 判断html 字符串是否合法, 给合法的标签列表, 要合法不能不同的标签相互交错。
5 account (aid, money)
设计 addMoney, subMoney transMoney(Account a, int money) 的线程安全的算法。
我写了之后,忘记考虑money的正负 是否溢出的情况,把我鄙视一番。 还有转账的方法, 两个对象都加锁,会造成死锁产生, 他问我咋办,我说一次都申请了,写的代码成了整个串行的了。 最后才想到 按顺序申请,可以每次先给id小的account对象加锁, 然而他已经对我彻底失望。其实感觉一开始就对我没抱希望的样子。
头条校招内推面试
一面: (1)大文件100亿个数字,求前m大的数 (2)进程和线程区别,啥时候应该用多线程,啥时候用多进程。 线程的好处? 协程?www.cnblogs.com/lxmhhy/p/60… (3)索引为何用b树 不用二叉树 database.51cto.com/art/201504/…索引很大需要存到磁盘,高度小了,需要的io操作少(4)两个有序数组,求第k个数, 说了双指针的做法,O(k), 面试官让想更优的, 没想出来。应该是用二分查找的方法。 bookshadow.com/weblog/2015… (5) 看什么技术类的书籍,讲讲jvm里都讲了啥。
二面:(1) 面试官脾气很好。。问了下数据库事物隔离,一开始说不大了解,突然想到之前看了脏读,不可重复读,幻读。。说了之后面试官也没深入问。http://www.cnblogs.com/zhoujinyi/p/3437475.html 然后问mysql的一些问题,为何一般不用select *, 要用select 需要的字段呢?尝试回答了,不大对,面试官就解释了一遍。。我忘了他讲的啥了。。。好像之前还被问到 limit 分页的数字大为啥效率会变低。。数据库不太了解。
三面 :(1) 问了jvm的, gc, 怎么判断对象存活。 volatile(两个特性) sychronized: 修饰一个类,其作用的范围是synchronized后面括号括起来的部分, 作用的对象是这个类的所有对象。 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法, 作用的对象是调用这个方法的对象; 修改一个静态的方法,其作用的范围是整个静态方法, 作用的对象是这个类的所有对象;修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码, 作用的对象是调用这个代码块的对象; wiki.jikexueyuan.com/project/jav… (2)实现LRU O(1) 但是面试官描述得有问题,说使最近用次数最少的blabla..,我说你说的是LFU啊,不是LRU. 他说差不多!!??说了LRU的数据结构,他又说加过期时间怎么整。。 我只能想到O(n)遍历删除的。(3)后来写了求树中两个子节点直接最长距离的。。差点没写上来。 一开始想对每个节点求左右高度,有重复计算,后来写代码时,就想到在递归中可以求一遍就好了。写好了面试官问了下边界情况,检查了下没问题。。然后说今天面试结束了,日常提问环节。。 瞎问了点问题。。
最后面头条的感受:感觉面了假的头条。。 头条实习一面挂的阴影还在, 咋还能给我终面过了。面试真是运气+眼缘啊。忐忑。 hr说九月中下旬给通知,也还不一定给offer。
小米内推
一面: 瞎扯项目, 算法题: 二维数组中,每个元素有个数字,求某一个点到任意一点的sum和(只能向右或者向下) dp记录到每个点的sum。 第二个题, 求一个字符串,包含一个字符集的最短长度。网易有道一面题
二面: 项目,讲了java 内存。进程线程。 26进制转换。 一堆ip中,查找一个ip是否存在。
最后问能不能实习。好多公司都希望是先去实习。最后微信问了面试官结果,说是通过,再给hr报备。
最后总结: 目前9月初,校招还未正式开始,基本都是内推的。不知道校招会是什么情况,但是现在来看,内推已占坑很多了,大家还是早开始早准备。前期我是海投的,包括一些小点的公司,面试了很多次,无数次的自我介绍、项目介绍。 注意一下,有的公司校招和内推不影响的,内推挂了可以再参加校招,而头疼是内推挂了,校招也不能参加了。一般来说,部门之间的内推面试不冲突的,比如百度可以面试好多部门。另外除了公司官网,要经常逛逛 北邮人 牛客等,多关注一些内推公众号, 多发现招聘消息,多点机会!