首页 > 编程学习 > 金九银十投递:美团、滴滴、360,面经回馈与经验分享(附学习路线+思维导图+刷题指南)

前言

两个月面了美团、滴滴、360、新浪网、完美世界、搜狐六家公司,其中两个公司面的都是Java研发,美团三面面试官说是做外卖机器人(类似无人驾驶车),个人比较感兴趣,如果发offer,就签约美团了。找工作这几个月,自己也看了很多的面经,收藏了一系列的面试资料,为了回馈帮助过或给我带来信心和失落时鼓励的你们,特将美团、滴滴、360、新浪网、完美世界、搜狐的面试经历记录一下。希望取之以桃,报之以李吧。

美团

一面

  1. hashmap,怎么扩容,怎么处理数据冲突?怎么高效率的实现数据迁移?
  2. Linux的共享内存如何实现,大概说了一下。
  3. socket网络编程,说一下TCP的三次握手和四次挥手
  4. 同步IO和异步IO的区别?
  5. Java GC机制?GC Roots有哪些?
  6. 红黑树讲一下,五个特性,插入删除操作,时间复杂度?
  7. 快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少

二面

  1. 自我介绍,主要讲讲做了什么和擅长什么
  2. 设计模式了解哪些?
  3. AtomicInteger怎么实现原子修改的?
  4. ConcurrentHashMap 在Java7和Java8中的区别?为什么Java8并发效率更好?什么情况下用HashMap,什么情况用ConcurrentHashMap?
  5. redis数据结构?
  6. redis数据淘汰机制?

三面

  1. mysql实现事务的原理(MVCC)
  2. MySQL数据主从同步是如何实现的?
  3. MySQL索引的实现,innodb的索引,b+树索引是怎么实现的,为什么用b+树做索引节点,一个节点存了多少数据,怎么规定大小,与磁盘页对应。
  4. 如果Redis有1亿个key,使用keys命令是否会影响线上服务?
  5. Redis的持久化方式,aod和rdb,具体怎么实现,追加日志和备份文件,底层实现原理的话知道么?

四面

  1. 遇到最大困难是什么?怎么克服?
  2. 未来的规划是什么?
  3. 你想问我什么?

HR面,聊优缺点,聊人生规划,聊学习技巧,聊各种有的没有,问Offer状况。

滴滴

一面

  1. 自我介绍
  2. 介绍一下mysql索引?为什么用B+树?
  3. 网络IO模型?什么是多路复用IO?select和epoll的差别?select具体过程?
  4. java类加载机制?双亲委派模型的好处?
  5. 进程和线程的区别?线程是不是越多越好,为什么?操作系统怎么调度的,调度算法?java中cpu调度是线程还是进程?
  6. 数据库事务?隔离级别?
  7. java线程变量怎么实现的?内存模型?
  8. 手撕代码
  9. 用数组模拟循环链表
  10. 堆排序实现
  11. JAVA并发包组件了解多少
  12. 线程的一个状态转换图
  13. HashMap和HashTable以及CocurrentHashMap详细说明
  14. SpringMVC的整个执行流程

二面

  1. 自我介绍
  2. 数据库索引?B+树?为什么要建索引?什么样的字段需要建索引,建索引的时候一般考虑什么?怎么解决分库分表?
  3. 数据库事务特点?事务隔离级别?项目中的事务实现?脏读、不可重复读、幻读各举个例子?
  4. Spring bean的生命周期?默认创建的模式是什么?不想单例怎么办?
  5. 谈谈Kafka和ZooKeeper了解情况?
  6. 设计模式,单例模式,怎么保证线程安全?锁效率太低,怎么提高效率?CAS?CAS本质是什么?什么是原子性?Compare and Swap,为什么能保证原子性(涉及到CPU指令)?分布式锁?
  7. 还有什么设计模式?工厂模式有几种,都讲讲?
  8. 数据库表怎么设计的?数据库范式?设计的过程中需要注意什么?enum类型的值一般怎么存?如果有一个十几位的小数为了不丢失精度怎么存?tinyint几个字节,int几个字节?

三面

  1. 项目介绍
  2. Redis简要介绍下,有哪些常用的数据结构?
  3. Redis是单线程的?Redis为什么查询数据这么快?
  4. Redis并发竞争key如何来解决?
  5. 有接触过哪些消息队列中间件?如何来选型?
  6. 谈谈你的SOA以及微服务的理解?
  7. 具体谈谈Spring Cloud服务和注册?
  8. 分布式场景面临的最大挑战是什么?
  9. 分布式场景数据同步如何来解决?

四面

HR谈人生理想和讲滴滴的业务。

360

一面

差不多三十五分钟左右吧

  1. 简短自我介绍
  2. 事务的ACID,其中把事务的隔离性详细解释一遍
  3. 脏读、幻影读、不可重复读
  4. 红黑树、二叉树的算法
  5. 平常用到哪些集合类?ArrayList和LinkedList区别?HashMap内部数据结构?ConcurrentHashMap分段锁?
  6. jdk1.8中,对hashMap和concurrentHashMap做了哪些优化
  7. 如何解决hash冲突的,以及如果冲突了,怎么在hash表中找到目标值
  8. synchronized 和 ReentranLock的区别?
  9. ThreadLocal?应用场景?
  10. Java GC机制?GC Roots有哪些?
  11. MySQL行锁是否会有死锁的情况?

二面

一面过了十多分钟以后,接着就进行二面,都是视频面试,差不多二十分钟左右

  1. 乐观锁和悲观锁了解吗?JDK中涉及到乐观锁和悲观锁的内容?
  2. Nginx负载均衡策略?
  3. Nginx和其他负载均衡框架对比过吗?
  4. Redis是单线程?
  5. Redis高并发快的原因?
  6. 如何利用Redis处理热点数据
  7. 谈谈Redis哨兵、复制、集群
  8. 工作中技术优化过哪些?JVM、MySQL、代码等都谈谈

题外话

感觉个人太紧张了,有好多原理性的东西讲着讲着就忘记讲了,面试的时候真的是太紧张了,发挥不太好,平时一定要多总结,不然面试的时候一下子总结地不太好,发挥不出应有的水平。

最后

对于现在流行的一些技术框架,我又掌握得如何了呢?实际上,我是有一个记录学习心得,做学习笔记的习惯,所以我对一些技术也有自己的总结和经验。

  • Java核心成长笔记:

  • SpringBoot核心技术笔记:

  • SpringMVC开发核心笔记:

  • Spring源码深度解析:

  • Redis学习总结

(4)面的是什么部门?面试的时候喜欢问什么?

在面试前,事先要清楚自己面试的是什么部门,要做好功课。比如,支付宝、蚂蚁金服这类的事业部,项目多与金融相关,淘宝、拼多多则是电商,这些区别也会影响面试的侧重点。

至于面试官喜欢问什么,则需要依靠平时的刷题来积累了,刷刷题,做到举一反三,对面试还是有很大的帮助的。

写在文末的箴言

读万卷书,行万里路。作为程序员,都说职业生涯到35岁就结束了,实际上大可不必相信这种年龄焦虑,35岁上的程序员也有不少,要不想被市场淘汰,首先你的有价值,你没有了价值,无论是什么职业都被社会淘汰的。
学习,永远不会辜负你,靠学习得到的,永远是你最宝贵的财富。

Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式