跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了,不受重视。

准备不充分的面试,完全是浪费时间,更是对自己的不负责(如果title很高,当我没说)。

今天给大家分享我在这次“金九银十”期间跳槽面试的几个大厂经历,总结了这次跳槽中整理的Java面试合集,其中大部分都是这次面试过程中的面试题,可以对照这查漏补缺。

天猫

天猫一面(55分钟)
自我介绍
HashMap实现原理,ConcurrentHashMap实现原理
红黑树,为什么允许局部不平衡
TCP,UDP区别,为什么可靠和不可靠
一次HTTP请求的全过程,包括域名解析、定位主机等
TCP三次握手
MySQL事务是什么?四大特性,四大隔离级别
ConcurrentHashMap和Hashtable区别
spring IOC和AOP,以及各有什么优点
有哪几种常用的线程池
什么情况下使用Runnable和Thread创建线程,Runnable和Callable的区别
线程方法中的异常如何处理,副线程可以捕获到吗
synchronized和锁的区别,什么情况下使用synchronized和ReentrantLock
JVM的对象分配在哪个区,Class对象分配在哪个区
天猫二面(50分钟)
常用的设计模式介绍:单例模式、装饰者模式等
Java会出现内存溢出吗?什么情况下会出现?
双亲委派模型,为什么这样做?
对象什么情况下进入老年代?
快速排序说一下过程
AOP实现原理:动态代理
BIO、NIO(如何实现的)、AIO
消息中间件有哪些?他们之间的优劣势?
Redis,持久化框架
栈和队列
垃圾回收算法
MySQL的索引
Tomcat 类加载器
OOM内存泄漏,什么情况下会出现,如何排查
天猫三面(40分钟)
介绍你实践的性能优化案例,以及你的优化思路
微服务和SOA的区别,优劣势
SQL慢查询的优化方案,索引和表的优化方案。
MySQL与MongoDB的区别,海量数据的存储
缓存框架,例如Redis、Memcached之间的区别,优劣势比较
请描述一致hash算法
分布式session的共享方案有哪些,有什么优劣势
高并发情况,系统的优化方案有哪些,以及优先级排序。
蚂蚁金服

蚂蚁一面(50分钟)
自我介绍和项目
Java的内存分区
Java对象的回收方式,回收算法。
CMS和G1了解么,CMS解决什么问题,说一下回收的过程。
CMS回收停顿了几次,为什么要停顿两次。
Java栈什么时候会发生内存溢出,Java堆呢,说一种场景,我说集合类持有对象。
那集合类如何解决这个问题呢,我说用软引用和弱引用,那你讲一下这两个引用的区别吧。
Java里的锁了解哪些,说了Lock和synchronized
它们的使用方式和实现原理有什么区别呢?
synchronized锁升级的过程,说了偏向锁到轻量级锁再到重量级锁,然后问我它们分别是怎么实现的,解决的是哪些问题,什么时候会发生锁升级。
Tomcat了解么,说一下类加载器结构吧。
说了Spring,问我Spring中如何让A和B两个bean按顺序加载?
10亿个数去重,我说用hash分片做,他说可能不均匀,然后我说了bitmap,他说那数字量更多怎么办,我说那就两个bitmap把。他说下一题吧。
蚂蚁二面(40分钟)
讲一下项目
做的主要是Java对吧,讲一下多线程把,用到哪些写一下
写了thread和runnable,然后写了线程池,又问了线程池由哪些组件组成,有哪些线程池,分别怎么使用,以及拒绝策略有哪些。
什么时候多线程会发生死锁,写一个例子吧,然后我写了一个两个线程,两个锁,分别持有一个,请求另一个的死锁实例。
集合类熟悉吧,写一个题目,一个字符串集合,找出pdd并且删除。
然后说一下Redis吧,是单线程还是多线程,Redis的分布式怎么做?
RPC了解么,我说了主要是协议栈+数据格式+序列化方式,然后需要有服务注册中心管理生产者和消费者。
TCP三次握手的过程,如果没有第三次握手有什么问题。
蚂蚁三面 技术面(60分钟)
自我介绍
cap了解么,分别指什么,base呢,强一致性和弱一致性有什么方法来做,2pc了解么,说一下大概过程。
负载均衡怎么做的呢,为什么这么做?
了解过集群雪崩么?
MySQL的主从复制怎么做的,具体原理是什么,有什么优缺点。
Redis有哪些集群模式,各自的区别?
项目用到了多线程,如果线程数很多会怎么样?
分布式了解哪些东西,消息队列了解么,用在什么场景,说了削峰,限流和异步。说了kafka,问我怎么保证数据不丢失,以及确保消息不会被重复消费。还问了消息送达确认是怎么做的。
讲一下项目的主要架构,你在里面做了什么
有什么比较复杂的业务逻辑讲一下。
最大的难点是什么,收获是什么。
面试小总结
阿里的面试特别喜欢面试技术原理,特别是:

多线程
NIO
异步消息框架
分布式相关的缓存算法等
JVM的加载过程和原理
回收算法
以及具体使用过的框架,会问部分参数检验你是否熟用
第一面被通过,后续被录用的可能性就会很大了,第一轮非常重要,建议系统的学习面试题

字节跳动

字节跳动一面(30分钟)
hashmap,怎么扩容,怎么处理数据冲突?怎么高效率的实现数据迁移?
Linux的共享内存如何实现,大概说了一下。
socket网络编程,说一下TCP的三次握手和四次挥手
同步IO和异步IO的区别?
Java GC机制?GC Roots有哪些?
红黑树讲一下,五个特性,插入删除操作,时间复杂度?
快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少
字节跳动二面(30分钟)
自我介绍,主要讲讲做了什么和擅长什么
设计模式了解哪些?
AtomicInteger怎么实现原子修改的?
ConcurrentHashMap 在Java7和Java8中的区别?
为什么Java8并发效率更好?
什么情况下用HashMap,什么情况用ConcurrentHashMap?
redis数据结构?
redis数据淘汰机制?
字节跳动三面(50分钟)
mysql实现事务的原理(MVCC)
MySQL数据主从同步是如何实现的?
MySQL索引的实现,innodb的索引,b+树索引是怎么实现的,为什么用b+树做索引节点,一个节点存了多少数据,怎么规定大小,与磁盘页对应。
如果Redis有1亿个key,使用keys命令是否会影响线上服务?
Redis的持久化方式,aod和rdb,具体怎么实现,追加日志和备份文件,底层实现原理的话知道么?
遇到最大困难是什么?怎么克服?
未来的规划是什么?
你想问我什么?
总结一下所有HR都爱问的几个问题
问经历
工作中遇到的最大挑战是什么,你如何克服的?
你最大的优点和最大的缺点,各自说一个?
看机会的时候,主要考虑的是待遇、平台、人员还是什么其他因素?
未来的职业发展,短期和长期的规划是什么?

“金九银十”已过,总结我的天猫、蚂蚁、头条面试经历(Java岗)的更多相关文章

  1. 金九银十已到!掌握这300道java高频面试题,助你面试BAT无忧!

    前言 不知不觉已经到了九月了,回首看年初的时候简直像做梦一样.不得不说时间真的是无情一般的流逝,题外话就不多说了!回归正题,现在已经到了今年最后一波大好的跳槽涨薪的时机了,错过了这一次可能你就得等到明 ...

  2. 金九银十已到!Cookie 和 Session的这些知识你必须知道,面试必问!

    前言 会话:一次会话中包含多次请求和响应 注:一次会话表示浏览器第一次给服务器发送请求,会话建立,直到有一方断开为止 功能:在一次会话的多次请求间共享数据 方式: (1) 客户端会话技术:Cookie ...

  3. 备战金九银十,Java研发面试题(Spring、MySQL、JVM、Mybatis、Redis、Tomcat)[带答案],刷起来!

    八月在即,马上就是"金九银十",又是跳槽招聘季.咱们这行公认涨薪不如跳槽加的快.但不建议频繁跳槽,还是要学会融合团队,抓住每个机会提升技能. 苏先生在这里给大家整理了一套各大互联网 ...

  4. 金九银十想去跳槽面试?那这份Java面经你真得看看了,写的非常详细!

    前言 前两天在和朋友吃饭的时候聊到时间这个东西是真的过的好坏啊,金三银四仿佛还在昨天.一眨眼金九银十又快到了,对程序员来说这两个是一年最合适的跳槽涨薪环节了,今年的你已经做好准备了吗?不妨看看这篇文章 ...

  5. 不等"金九银十",金风八月,我早已拿下字节跳动的offer

    字节跳动,我是在网上投的简历,之前也投过一次,简历都没通过删选,后来让师姐帮我改了一下简历,重新投另一个部门,获得了面试机会.7月23日,中午HR打电话过来预约了下午4点半面试,说会在线写代码,让我准 ...

  6. 金九银十跳槽高峰,面试必备之 Redis + MongoDB 常问80道面试题

    前言 有着“金九银十”之称的招聘旺季已经开启,跳槽高峰期也如约而至. 本文为主要是 Redis + MongoDB 知识点的攻略,希望能帮助到大家. 内容较多,大家准备好耐心和瓜子矿泉水. Redis ...

  7. Android&Java面试题大全—金九银十面试必备

    声明本文由作者:Man不经心授权转载,转载请联系原文作者原文链接:https://www.jianshu.com/p/375ad14096b3, 类加载过程 Java 中类加载分为 3 个步骤:加载. ...

  8. Java程序员备战“金九银十”必备的面试技巧(附携程Java岗面试题)

    一.面试前的准备 1.1 如何准备一场面试1.1.1 如何获取大厂面试机会1.1.2 面试必知 ①. 准备介绍自己 ②. 关于着装 ③ .随身带上自己的成绩单和简历 ④. 如果笔试就提前刷一些笔试题 ...

  9. 想要金九银十面试通关,不懂 Java多线程肯定是不行的!

    作者 | 纳达丶无忌 如果对什么是线程.什么是进程仍存有疑惑,请先 Google 之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用 CPU 的资源,因为所有的多线程代码都 ...

随机推荐

  1. ES6数组及对象遍历的新增方法 entries(),keys() 和 values()

    ES6 提供三个新的方法——entries(),keys()和values()——用于遍历数组.它们都返回一个遍历器对象(详见<Iterator>一章),可以用for...of循环进行遍历 ...

  2. weblogic 安装及配置

    修改AdminServer为不需要输入密码的方式开启 : 安装使用的是production模式,不是开发模式,如果要后台启动Weblogic, 需要在如下DOMAIN_HOME/servers/Adm ...

  3. 真机调试(A valid provisioning profile for this executable was not found.)

    这个问题是因为provisioning的问题,因为真机没有加入到账号下面的原因 解决步骤 1.吧identifier复制然后再平开开发中心 2.点击+号添加设备保存 3.在develope中选中保存即 ...

  4. 有趣的bug——Java静态变量的循环依赖

    背景 是的,标题没有错误,不是Spring Bean的循环依赖,而是静态变量之间的循环依赖. 近期的项目均是简单的Maven项目,通过K8S部署在阿里云上,其配置文件读取规则如下所示: (1) 优先读 ...

  5. 使用Socket下载图片

    Socket下载一张图片 Socket下载一页图片 Socket下载一张图片 在百度搜索头像,挑一张 复制图片的路径打开,并保存这个url 把这个url的域名和路径分开 首先导入socket模块 第一 ...

  6. Docker 类面试题(常见问题)

    Docker 常见问题汇总   镜像相关 1.如何批量清理临时镜像文件? 可以使用sudo docker rmi $(sudo docker images -q -f danging=true)命令 ...

  7. 网络流(3)——找到最小st-剪切

    在大规模战争中,后勤补给是重中之重,为了尽最大可能满足前线的物资消耗,后勤部队必然要充分利用每条运输网.与此同时,交战双方也想要以最小的代价切断敌军的补给,从而使敌军处于孤立无援的境地.在古今中外的各 ...

  8. equals和==的应用场景

    今天我知道了 抽象类主要作为多个类的模板,接口则定义了多个类应该遵守的规范. "=="比"equals"运行速度快,因为"=="只是比较引用 ...

  9. Javascript定时器只能执行一次

    为了说明问题,代码很短 <script> var test = function(){ console.log('a') } timer1 = setInterval(test(), 10 ...

  10. [C0] 人工智能大师访谈 by 吴恩达

    人工智能大师访谈 by 吴恩达 吴恩达采访 Geoffery Hinton Geoffery Hinton主要观点:要阅读文献,但不要读太多,绝对不要停止编程. Geoffrey Hinton:谢谢你 ...