前言
两个月面了美团、360、新浪网、完美世界、搜狐五家公司,其中两个公司面的都是 Java 研发,美团三面面试官说是做外卖机器人(类似无人驾驶车),个人比较感兴趣,如果发 offer,就签约美团了。找工作这几个月,自己也看了很多的面经,收藏了一系列的面试资料,为了回馈帮助过或给我带来信心和失落时鼓励的你们,特将美团、360、新浪网、完美世界、搜狐的面试经历记录一下。希望取之以桃,报之以李吧。另外有需要面试资料的小伙伴们,也可以在文末领取一下!
美团
一面
1.自我介绍和项目。
2.项目里面的数据库如何设计的?
3.varchar 的最大长度,超过了用什么?
4.多列索引怎么用?并解释底层原理。
5.左连接、右连接、内连接。
6.说出几种保证线程安全的方法。
7.说出几种保证线程同步的方法。
二面
1.自我介绍和项目。
2.五层网络协议和 osi 七层网络协议。
3.tcp3 次握手和 4 次挥手,并解释如果 3 次握手改成两次行不行?
4.编程题,判断链表是否有环,除了快慢指针还有其它做法嘛?
5.编程题:找到链表的中间节点。
6.编程题:给出一个 char 数组 比如 a,b,c 每个字符出现的概率给出,如 10%,20%,70,写一个算法保证打印 10000 次字符,这三个字符的出现频率是给出的频率,而且每个字符都是随机打印的,不能连续打印。
7.Mysql 的存储引擎。
8.事务的隔离级别,并回答幻读是出现在一次事务操作还是两次?
9.说下你了解的设计模式,并说下单例中的饿汉式和懒汉式的区别和各自的优缺点。
10.场景设计,商品表,一共 100 件商品,如何保障多用户购买商品时,商品数量不会出现负数,并且保证效率最高。
三面
1.cap 了解么?分别指什么?
2.网络编程 nio 和 netty 相关,netty 的线程模型,零拷贝实现。
3.Redis 是单线程还是多线程?Redis 的分布式集群怎么做?
4.分布式消息队列有哪些(Kafka 等)?有使用过哪些?具体应用在什么场景?
5.负载均衡怎么做的呢,为什么这么做,了解过集群雪崩么?
6.谈谈高并发场景下削峰,限流的实现?
四面
HR 面,聊优缺点,聊人生规划,聊学习技巧,聊各种有的没有,问 Offer 状况。
360
一面
差不多三十五分钟左右吧
1.介绍你做过的项目。
2.手写单例模式。
3.布局优化。
4.有没有用过什么开源框架?
5.ImagLoader 的实现原理。
6.OnTouchEvent 事件中 down 事件 和 up 事件的传递。
7.hashMap 的实现原理。
8.LinkedHashMap 的实现原理。
9.内存管理及优化。
10.点九图。
二面
一面过了十多分钟以后,接着就进行二面,都是视频面试,差不多二十分钟左右
1.AsyncTak 的原理及常用方法。
2.APK 从安装到启动的过程。
3.平时是怎样学习的?
4.学习和实习是在怎样协调的?
5.有 360 手机助手有什么想了解的吗?
题外话
感觉个人太紧张了,有好多原理性的东西讲着讲着就忘记讲了,面试的时候真的是太紧张了,发挥不太好,平时一定要多总结,不然面试的时候一下子总结地不太好,发挥不出应有的水平。
新浪
一面
1.先问自我介绍,说一下你认为的团队合作?
2.用过 Linux 系统吗?常用指令(我说不太了解,就没问)
3.说一下虚拟内存?
4.介绍一下 hashmap?
5.hashmap 和 hashtable 的区别?
6.算法题:10 万行数据,每一行都是一个 int 类型的数,按数字出现的频次取出现次数最高的 10 个数
7.输入是一个整形数组,输出:数字+频次
8.思路:可以自己定义一个类,里面 key 为出现的数字,value 为出现的频次
9.然后新建一个容量为 10 的小顶堆,按照 value 进行排序。
10.我是用 hashmap 统计的,然后再对 value 用小顶堆(priorityqueue)排序,需要把 value 和 key 绑定。如果下一个的 value 小于堆顶则丢弃,大于堆顶则插入。
二面
1.自我介绍;
2.介绍项目;
3.KVM 和 XEN 虚拟化的区别
4.如何用 JAVA 生成永远的 ID:UUID(Universally Unique Identifier)
5.树的遍历,并非二叉树的遍历
6.堆排序的问题
7.多线程轮流执行用什么锁??
8.AOP 的底层原理(动态代理,GClib)
9.Object 类的方法
10.循环依赖如何解决,自己设计几种算法
11.快速排序原理,随机快排口述
12.iptable 实现反向代理
三面
1.首先问了我发表的论文具体的内容是什么?
2.虚拟内存知道么?什么时候使用虚拟内存?虚拟内存除了扩大内存还有什么用?
3.Spring 的上下文切换,如何优化上下文优化来做到减少系统资源消耗?
4.函数调用约定了解么?Function calling convention。
5.进程线程的区别,除了包含关系之外的一些区别,底层详细信息。
6.TCP/UDP 全部内容:三次握手、四次挥手、为什么不能两次,为什么三次,TCP 的可靠是怎么实现的,滑动窗口,为什么是 2MSL?
7.边缘网关协议了解么?简单描述一下
8.Docker 容器相关。
9.高并发接触过么(没有,都是用户量小,业务驱动技术,并不是产品驱动技术)
10.最后一个就是 sql 语句的考察,然后各种变换情况,表连接什么的,我以为写错了,结果面试官说都对~
完美世界
一面
1.自我介绍。
2.讲一下 HashMap,HashMap 和 Concurrent HashMap 有什么区别,HashMap 的 Key 可以为 Null 吗?Concurrent HashMap 呢?
3.知道异常吗,将你知道的异常写出来(这个我把异常的整个体系画出来了,然后我自觉的将 Error 和 Exception 区别讲了一下),说说常见的 Runtime Exception。
4.了解并发编程是吧(因为我简历上写了了解 Java 并发编程),讲讲 Synchronized 和 Lock(这个我就将用法和注意事项和性能的区别一一讲述),Synchronized 修饰普通方法和修饰静态方法有什么区别,然后面试官给我写了两个情景让我讲程序运行情况。
5.讲讲 GC 机制,知道担保机制吗?
6.Java 中阻塞线程的方法有哪些?(刚开始紧张说成中断有哪几种了,然后面试官提醒我说他没问这个)
7.平时数据库用的是什么?讲讲 Mysql 的存储引擎。写几个 SQL 语句。
二面
1.会用线程池吗?知道数据库连接池吗?如果让你写一个你怎么写?(现场写喔,但是我当时不知道怎么想的,以为面试官让我写线程池,我就写了半天线程池,然后面试官等不及了就看我写的我还一本正经的给讲线程池,然后就很尴尬的进入下一题了哈哈哈哈)
2.知道 Https 吗?写一下详细连接过程。
HR 面
主要是问如何做的项目和平时生活学习状态,讲了一下薪酬和培训机制,感觉完美的人都蛮好的~
总裁面
总裁很有气场!进去就直接问项目里的东西,讲了一些项目里用到的技术,问平时怎么学习,看什么书,在项目里都干了什么。然后就差不多了,感觉总裁特别特别忙,问我有什么问题,我就说没有了,然后就结束啦。
搜狐
一面
1.自我介绍。
2.你用到了 LDA,那么请讲一下 LDA 的原理是什么?我简单说了一下 LDA 生成文档的过程,但是根据什么生成没答上来 2333(LDA 是我的痛,看了几遍没看懂)
3.也就是说你的计算是现场算的么?是的,我知道这样效率有问题,我的系统中没有解决,但是可以先对新闻进行聚类,然后对每个簇提出一个模型,先匹配簇在选择新闻(SCENE 论文中的方法)
4.你的数据量有多大?3 万多条新闻,100 个用户吧。
5.你的用户较少,那么在推荐的时候矩阵一定是稀疏的,对于这个稀疏矩阵应该如何处理?可以用 PCA 或者 SVD 进行矩阵分解
6.你的关键字是如何从文档中提取出来的?使用了中科院的 NLPIR+TF-IDF 算法。
7.讲一讲 tf-idf 是什么意思,TF 就是表示词频,IDF 是逆文档频率的意思计算方法为 log(N/n),N 新闻集的大小,n 为包含这个词的新闻的数量。
8.你系统使用什么语言实现的?
9.你的新闻的备选集如何获取?选取当天新闻,挨个算一遍。
二面
1.你的项目部署在哪里?
2.讲一下项目
3.把项目中的主要数据库表怎么设计的写一下它的结构
4.用户表密码是怎么存储的?(回答 MD5)你知道还有别的加密方式吗?
5.写 SQL,根据设计的表进行多表查询(写了一个嵌套查询,又让写 join 查询)
6.索引该怎么建?针对你设计的表每个字段,需不需要建立索引?
7.建索引的原则是什么?
8.你主要用了 SpringBoot 的哪些功能?
三面
1.你做的项目,哪些是对你来说无论是技术成长还是难度上是比较挑战,你项目遇到什么挑战怎么解决的?
2.你的项目具备什么样的能力,主要是解决什么样的问题?
3.项目的一些问题,做了多久?你每天都会做吗,还是会做一些学习上的事情?
4.做完之后有请周围的人或者朋友来感受一下吗?
5.算法题:
输入一个整数,判断是否是自除数
输入一个字符串,只考虑数字和字母,忽略字母大小写,验证是否为回文串?
6.代码中为什么用 StringBuilder,不用 StringBuffer?
7.你有看过 Java 怎么实现 equals 和 hashcode 吗?
8.好了,那么你觉着你自己都有哪些优点呢?
最后
所有的面试题目都不是一成不变的,上面的面试题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。秋招即将来临,来刷刷这份秋招面试手册,有需求即可免费分享下载!(着重挑了一些常见的重要的面试题展示出来了)
所有的面试题目都不是一成不变的,上面的面经只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。
文中提到的相关面试题整理成了 40 多套 PDF 文档:全套的 Java 面试宝典手册,“性能调优+微服务架构+并发编程+开源框架+分布式”等七大面试专栏,包含 Tomcat、JVM、MySQL、SpringCloud、SpringBoot、Dubbo、并发、Spring、SpringMVC、MyBatis、Zookeeper、Ngnix、Kafka、MQ、Redis、MongoDB、memcached 等等。如果你对这个感兴趣,小编可免费分享。
资料获取方式:见下图扫描二维码即可获取到了