春招实习面经(Java开发)
我感觉看别人的面经只是增长知识,给自己自信,真正想要成长还是要自己去体验面试的过程。
阿里面试
一面
人生的第一次给了阿里,我是周一收到面试通知,周四(2018.3.1)上午10点多开始的面试,在这期间看了好多阿里的面经,感觉很难,很高大上,为此我整整两天都在看一些这种问题。但是实际上差距还是很大的,感觉这次面试只是了解一下你。(最后悔的事是没有录音)
面试总共30分钟。(有些问题的顺序不太准确了)
1.自我介绍
2.某个项目中用过哪些技术
3.学过哪些课程?(最好回答自己比较熟的,否则后面坑自己,我就把自己坑了)
4.上过《机器学习》,问了一个问题我记得不太清,我只回答了不记得了。
5.算法和数据结构还清楚吧,简单说一下快速排序和堆排序?时间复杂度?
6.http返回的状态码
7.触发器的执行过程
8.equals与==的区别
9.又问了各个项目用的什么语言,周期
10.过去一年干了什么,学习了什么,到什么程度?
11.介绍一下有几种锁
12.介绍一下threadlocal
————————————————手动分隔符——————————————————————
小米面试
一面(4月16)
1.不用自我介绍,直接介绍一下项目用了什么?
2.浏览器输入url的流程,知道的具体说一下(DNS,http连接,负载均衡,服务器处理请求都说了一遍,顺便把springMVC流程说了一下)
3.数据库索引
4.socket通信
5.在线写一道算法题:一副扑克,随机给5张,凑成顺子,王可以代表任意一张,判断能否凑成顺子。
之前问题差不多30分钟,算法题20分钟,当时感觉面的还行,面试完没多久,就通知第二天下午电话二面
二面(4月17)
1.用过redis或者hibernate之类的框架吗?(没)
2.又问javaweb连接数据库的过程
3.懂前端语言吗?
4.知道maven吗
5.git中reset是干什么用的
6.用过什么前端框架吗?(bootstrap)
7.还有吗?
8.还会什么其他语言?(Android,项目做过,然后不问了)
9.会c或者Python吗?(会c,之前学过,然后也不问了)
(以上总共用了18分钟。。。。。。。凉。。。)
10.在线编程:题目有点长,就是给个字符串,输出编译后的。
例如:5[a]4[b] 编译成aaaaabbbb
abc3[ab]2[bc] 编译成abcabababbcbc
a2[ab3[bc]c]a 编译成aabbcbcbccabbcbcbcca
同时数组可能大于10。
(因为之前问的都没答上来,这时很慌,开始用动态规划,后来发现不对,应该用栈
思路是:两个栈strstack、sumstack;
当碰到 '[' 时,将tmp压入sumstack栈中,同时tmp=0;
碰到字母时,看strstack栈中是否有字符串,存在取出栈顶后str+'当期字母',压入strstack;strstack不存在元素时,直接加在结果字符串res后面。
当碰到 ']'时,取出strstack和sumStack的元素,以sumstack为界,循环多次strstack,之后判断strstack是否还有元素,没有就把循环多次的结果加在结果字符串res后面;如果strstack还存在元素,就把这个结果接在栈顶元素后面。
当碰到数字时,tmp = tmp×10+此数字。
)栈是为了中括号的嵌套,因为这个里面值先展开最里面的括号,把字符串加到外面的括号中,外面括号在展开,依次类推。
所以动态规划可能是不对的(可能是我太菜,没找到状态公式)
————————————————手动分隔符——————————————————————
远景面试
1.自我介绍
2.jvm垃圾回收机制,青年代分为三份各叫什么?(我当时没想起来,eden、surivivor1、surivivor2)
3.两个文件存着电话号码,用Linux命令怎么合并在一起(实现去重,对Linux命令不熟所以没答上来,应该是cat file1 file2 |sort|uniq > file3)
4.如果是两张表存电话号码,取交、并、差集。
5.存着一个很大的文件里面有电话号码,给一个号码看看里面是否存着,不存在就把新号码加入。
总共21分钟,问的题目不难,就是自己没有答好,有些问题太着急了,没有想清楚,关于Linux的命令太薄弱了,现在网上状态是面试结束(一面就结束。。。)
————————————————手动分隔符——————————————————————
爱奇艺面试
一面
1.自我介绍
2.问项目
3.说一下自己熟悉什么?比如线程、锁等之类的
4.jvm分区
5.堆排原理,如何创建堆详细介绍一下
6、写一个堆中插入一个数的代码
总共用时24分钟,问的比较简单。
二面
1.自我介绍
2.问我是社招还是实习(因为他是混面的,所以我感觉他问的有点深,也是我没怎么看源码的原因)
3.问项目
4.线程的状态(我答的是简单的五种,但是面试官说不准确,其实应该答七种:创建、就绪、运行、阻塞、等待队列、锁池队列)
5.volitile了解吧,说一下它是如何实现可见性的(我只记得如何实现防止重排序)
6.final简单介绍一下(我答的不全,面试官说还可以防止逃窜,我开始不理解后来看到网上有个例子,面试官可能是这个意思
byte b1=1;
byte b2=3;
byte b3=b1+b2;//当程序执行到这一行的时候会出错,因为b1、b2可以自动转换成int类型的变量,运算时java虚拟机对它进行了转换,结果导致把一个int赋值给byte-----出错
如果对b1 b2加上final就不会出错
final byte b1=1;
final byte b2=3;
byte b3=b1+b2;//不会出错)
7.NFS挂载里用到的协议有什么(这是自己给自己挖的坑,哭着也要填上)
8.mysql两个查询语句怎么才会发生死锁(不会,又换个题)
9.一张表有(天(1/2/3/4........)、温度),查出温度比前一天高的有哪些,经过提醒我才写出来
select a.date from A a left join A b on a.date = b.date-1 where a.tem>b.tem;
10.有一个商城进行抢购,如何并发实现(之前好像看过一个博客,但是没太记住,我只说了我的想法)
11.知道有哪些锁,reentrantlock实现方式,AQS原理,cas原理
12.hashmap线程安全吗,什么时候不安全,原因;当两个线程,一个扩容一个读取时,线程安全吗,为什么?新版本有什么改变,哪个版本加入了红黑树?
13.hashcode如何实现的?
13.线程安全的有什么,currenthashmap实现原理
14.一个编程题,给一个一天股票价格数组,一天进行一次买进和卖出,求最大收益?
输入 2,3,5,4,3,2,8,返回6
输入2,4,6,1,5,10,返回9
时间复杂度为O(n)
三面
2018.5.9(总监面)
1.一分钟自我介绍
2.记忆最深的一次项目经历
3.多线程中的锁
4.threadlocal
5.tcp三次握手
6.为什么三次握手
7.RPC
8.Linux查看某个端口号是否被占用
9.一个100G文件,里面每一行存:name(名字)、nums(次数),找出最多的100个记录。代码实现
最后三个问题回答的不好,虽然剑指offer、leetcode刷了一些题,但是碰到实际问题不会写代码了。
————————————————手动分隔符——————————————————————
美丽联合集团(微选)
一面
1.自我介绍
2.问项目(大部分时间,下面问题是根据项目问的)
3.jdbc连接数据库步骤
4.如何配置数据库连接池
5.做过哪些优化,如果现在来做可以有哪些优化
6.Linux中查询进程并杀死
7.Linux中查看日志后100行
8.有什么想问的
中途信号不好,断了两次。。。。。。
当天hr来电话说5月7号上午11点二面
二面
全程53分钟,基本全在问项目
1.自我介绍
2.问项目(WebMagic有哪些方法,如何设计多线程)
3.还是问项目(BCC校验,socket通信,都是和项目相关,具体跟项目挂钩)
4.问问题(我问的问题太不好了,感觉有点让面试官生气,╮(╯▽╰)╭)
主要考察项目细节和思路,有哪些优化方式。
————————————————手动分隔符——————————————————————
今日头条
一面
5月8号
1.自我介绍
2.数据库索引
3.索引结构
4.innodb为什么用B+树索引
5.acid
6.什么是事务
7.数据库隔离级别
8.http中keep-alive是干什么用到,Request-header中有什么?
9.什么是分段和分页?
10.编程题:给一个无序数字,找到数组中最长递增序列的个数?
例如:[1,3,5,4,7] 输出 :2
结果集:[1,3,5,7]和[1,3,4,7]
————————————————手动分隔符——————————————————————
51信用卡
一面
5月10号
1.自我介绍
2.问项目
3.Java内存结构
4.垃圾回收
5.为什么用复制回收和压缩整理
6.问问题