2020春招java实习面经(阿里美团唯品会华为)附学习资料
春招实习算是告一段落了,从二月中旬开始复习,四月份开始投简历,一直到现在,简单记录一下,回馈牛客,感谢这段时间牛客的面经陪我度过的日日夜夜。
基本情况:本人菜鸡一枚,没啥项目,烂大街的秒杀,刷了剑指offer,leetcode 250题左右,倒是背了不少面经
推荐书籍:深入理解java虚拟机,mysql技术内幕Innodb存储引擎,redis深度历险,剑指offer,java并发编程之美(强烈推荐),实战java高并发程序设计
推荐面经总结博客:https://thinkwon.blog.csdn.net/article/details/104390612 (强烈推荐)
推荐视频: bobo老师的算法视频(慕课网),腾讯课堂的一些架构师视频(还挺不错的)需要的话留言
资源发在了评论区 8,9楼,自取哦!
- bobo老师的算法视频刷完加上课后布置题目独立完成,剑指offer各种优化题解,一般大厂都是没问题的
- TX课堂的视频可以有个大方向吧,自学不错
最后:入职美团
java开发实习,主要考察:
- 做过的项目
- java基础
- 并发编程,juc下的一些组件
- jvm虚拟机
- 数据库
- 手撕算法
- 计算机网络,操作系统基础知识
美团
美团一面(80分钟左右)
- 自我介绍,介绍项目
- 问一些项目情况,redis为什么要设置过期时间,redis数据达到多少是阈值,过期时间是怎么设置的,商品信息有哪些,怎么实现redis,mysql数据一致性,为什么不采取更新数据库,再更新缓存?这样做有什么不好?怎么改进呢?等等
- final finaly finalize的区别?final可以修饰方法嘛?final修饰基础类型与引用的区别?
- 介绍一下常用的集合,arrayslist与linkedlist的区别(这里我深入分析了源码)
- 介绍一下hashmap(源码角度分析,还说了put流程,如何resize,最后细节到是否覆盖旧值的参数)
- 操作系统中线程与进程的区别
- 线程池的7大参数(例举了一下,最后详细介绍了几种拒绝策略),为什么有core,max线程数?(分析了一下整个线程流程)
- jvm中的内存区域(重点介绍了读论文时的JNI接口,本地方法栈,栈内分配,TLAB)
- 写算法:树的镜像交换,比较简单,写了递归,又写了基于层序遍历的非递归版本
- 反问:先夸一波面试官,您问的问题真的很棒,很多我在学习时忽略到的,虽然基础但是很深入,学习到了很多,没人能经受的了拍马屁吧!!!然后问了一些学技术的建议,企业希望大学生可以处于什么样的水平?
美团二面(50分钟)
第二天就接到了电话,约了面
- 自我介绍
- 读过redis源码嘛?redis的数据结构(除了基本五种,还说了超级日志,地理空间),Z-Set基于什么?介绍一下跳表?jdk中的跳表?
- 分布式session(介绍背景,流程,操作),session,cookie区别
- md5加密的流程?怎么应对彩虹表?
- rabbitmq一些知识(我说不怎么深入,就没问了)
- http请求头中的信息(基本都说出来)
- 输入 www.baidu.com 时的内部流程,dns基于udp还是tcp
- tcp/udp的区别
- 设计LRU (基于map,linkedlist)分析时间复杂度,要求优化,说了优先级队列将查找降为对数级别,不满意,叫我回去看linkedhashmap源码
- 算法:leetcode 197题,数组元素组合为最大的数,没想出来,提示是排序,代码写了半截,说了思路,面试官给了邮箱,写好了发给他
- 平时看的书籍:我把之前的书单一本一本摆在他面前(并说了日常怎么看书学习:就是吹牛)
美团hr面
二面后一个小时,收到了hr面
谈了入职时间,待遇
阿里,字节,美团选择哪个?(这里我没说阿里,感觉美团我也说不上来比阿里好在哪,强答有点舔的意思)
委屈字节了,什么美团底蕴好,字节只是短视频的风口,字节迷别骂我,说辞罢了
唯品会
唯品会是在实习僧上面投的,base 广州,上海
写在前面:
- 唯品会实习还是比较简单的,基本就是聊人生(我的强项)
- 一天230,包三餐,另外唯品会是公认的美女如云(理工男诱惑很大)
- 希望大家积极投递,打个广告
唯品会一面(35分钟)
- 自我介绍,介绍项目
- 数据一致性,分布式session,session,cookie区别?
- 读过spring,mybatis源码嘛?
- 数据库掌握的怎么样?说说你知道的(这个问题我很迷,还是介绍了索引,索引结构,使用场景,expalin关键字,说了自己改sql的一些心得)
- 写代码:无序数组中找中位数(这题我朋友面阿里也遇到过),快排patition解决
- 聊人生:你是怎么样的人,你的职业规划(吹了一波,然后还说了如何回报家乡社会,慷慨激昂,热血沸腾)
唯品会HR面
技术只有一面
- 对于实习地点的选择
- 待遇啥的
- 未来规划,基本的情况
ps:广东妹说话的语气好逗,特别 o~k 这个词说出来差点笑场
阿里
当时投阿里木的底气,笔试也不好,测评瞎写的,那些智力题随便勾的(阿里很看重这个),后来非常后悔
学校的原因还是给了面试
阿里一(60分钟)二(70分钟)三面(35分钟左右)
记不太清了,放在一起
一面:速度问的很快,基本涵盖了所有常考点
- 项目的情况,redis,消息中间件,数据一致性,分布式session,实现分布式session的方式(除了redis第三方),登录的过程
- redis 作用,删除策略,集群,缓存击穿
- spring的循环依赖,spring bean的生命周期,事务传播级别
- 介绍常见的集合,Arrayslist,hashmap,hashset等
- 常见的并发包类
- 常见的排序有哪些,说说希尔排序,为什么快?
- 介绍红黑树,红黑树的特性,红黑树如何进行旋转
- mysql,索引结构B+树,hash索引,怎么解决慢查询,什么情况使用不到索引,sql语句的执行流程,覆盖索引的实现
- 虚拟机,类加载机制,垃圾回收器,cms,ps使用场景
- int integer区别(内存位置)
- 计算机网络三次握手,四次挥手,ddos攻击在哪一阶段
当天晚上加了笔试:1.给定一个字符串,请将字符串里的字符按照出现的频率降序排列。2.最长无重复字符串
很简单半个小时都写出来了
二面:和面试官聊的挺开心的,特别是最后聊学习方式,人生,我太能侃了
- 计算机网络的五层,七层协议
- udp/tcp的区别,微信使用的是哪种
- 介绍快速排序
- 完了记不清了(都是基础知识,全部都回答出来了)很简单
- 平时怎么学习的?(这里说一下,遇到这种大的问题,不要简单的回答,而是塑造一种类似英雄故事,你之前是什么样的,然后遇到什么困难很痛苦,寻求改变,最终升华,所以现在是这样,要说的绘声绘色,面试官好比在听一部英雄故事,让面试官也能感同身受,心想确实是这样,这种英雄故事的方法可以应用在项目介绍中,针对某一个技术点,说(bian)一段英雄故事,之前使用什么技术,后来遇到什么问题,寻求改变,改进过后达到什么效果等等,面试官不会在意你的项目深度,更多的是你怎么解决问题,怎么思考?不知道你们能不能get到我的点)
三面:随便聊了聊,当场就给过,叫我好好准备后续面试
- 自我介绍,项目介绍
- 分布式session,redis怎么提高访问速率
- 安全性md5加密流程
- 说说redis(介绍了单线程,多路复用,主从模式,哨兵模式,集群模式,rdb,aof持久化流程)
- 介绍快速排序,分析时间复杂度,如何改进?
阿里四面(40分钟)(挂)
这面翻车了
- 职业规划
- 你对java后续版本有什么建议?
- 如果是你,你怎么设计一款垃圾回收器,怎么减少fullGC时间
- 一段文章,我要将其hash到一段空间,可以使用指纹什么保存解密,你怎么设计?
全程黑人懵逼问号脸,答非所问,思维混乱,面试官很不开心,哎~
阿里被捞一面(25分钟)
- 自我介绍
- 怎么解决超卖?怎么解决高并发?怎么解决用户重复下单?
- 说说hashmap,resize流程,负载因子过大,过小会怎么样?
- 两个链表找公共节点:我说的是浪漫相遇法,他没听懂,电话面,然后叫我分析时间,空间复杂度
public ListNode getIntersectionNode(ListNode headA, ListNode headB) { /** 定义两个指针, 第一轮让两个到达末尾的节点指向另一个链表的头部, 最后如果相遇则为交点(在第一轮移动中恰好抹除了长度差) 两个指针等于移动了相同的距离, 有交点就返回, 无交点就是各走了两条指针的长度 **/ if(headA == null || headB == null) return null; ListNode pA = headA, pB = headB; // 在这里第一轮体现在pA和pB第一次到达尾部会移向另一链表的表头, 而第二轮体现在如果pA或pB相交就返回交点, 不相交最后就是null==null while(pA != pB) { pA = pA == null ? headB : pA.next; pB = pB == null ? headA : pB.next; } return pA; }
- 了解过用户推荐嘛?
- 技术发展的规划,想往哪个方向发展?
然后,直接说到这里,拜拜!(我怀疑你是不是刷kpa的)
阿里被捞二面(30分钟)
写在前面:面试官小哥十分匆忙的样子,主要考察了算法方面的知识,前面几位面试官对我的基本表示肯定,但是对算法部分比较担心(哎 ~ 当初智力测评瞎写,笔试没认真)
- 自我介绍
- 两个栈模拟队列?
- 两个队列模拟栈,一个队列怎么做?
- 在十万的数字中找出前100?说了快排patition+二分,堆
- 10亿的数字找前10万,空间给1亿(分治法加堆),分析时间复杂度
- 100亿数字找前10亿,空间1亿(没怎么说好,bitmap)
小哥表示挺满意,并希望我能成功来阿里,经过团队的锻炼,实际项目的上手,我会有非常大的提高
明天约了面(哎~阿里的第七面)
各位看官还是强调一下:不要觉得题目简单,面试官主要不是让你做题,还是考察你的逻辑思维能力与言语表达能力
华为南研所一面
写在前面:问的非常简单,而且感觉有一种他就怕我答不好的错觉,我每次说了一半,等他追问,他直接换问题了,一脸蒙蔽
- 自我介绍,问我的导师是谁,专硕和学硕的区别
- 序列化与反序列化
- final与finalize区别
- 你如何理解并发包?
- 常用的集合有哪些?
- 如何理解GC?(这里我从c++引入,java有gc的好处,介绍垃圾回收算法,优缺点及适用场景)
回答这个问题时装了一下逼:介绍了人月神话中的没有银弹,一项技术的产生就是基于解决旧技术所带来的问题,而随着业务场景的变化及新问题的出现,该项技术也会被新技术所取代,然后结合gc的回收算法说了自己的见解,面试官很认可。装逼成功!!! - 写二叉树的深度及中序遍历递归非递归
- 华为测评显示焦虑,问了我情况
- 当场说过了,等业务主管面