1 java后端技术
javase
《核心技术卷1》:面向对象(多态、Object类、关键字)、接口与内部类、集合、泛型、反射
黑马视频
并发
多线程
《Java并发编程的艺术》
慕课网视频:Java并发编程与高并发解决方案
设计模式
《大话设计模式 》:掌握常用的设计模式以及在简历上写到大的框架中的典型应用场景
慕课网视频:java设计模式精讲 Debug 方式+内存分析
java虚拟机
只需要掌握重点
《深度理解java虚拟机》:内存区域、垃圾回收、类加载
框架
掌握核心机制与大致原理
Spring:掌握IOC、AOP、事务
SpringMVC 与 Servlet: 大致处理流程
SpringBoot :自动装配
SpringCloud:各组件核心机制原理 慕课网廖师兄视频
后端进阶
看看就好,能吹出来
包括了分布式理论,以及常见分布式技术比如负载均衡,zookeeper,消息队列,分布式缓存等等。当然,这里面也包括系统架构方面的知识,以及RPC,微服务等内容。
3. 计算机基础
数据库
MySQL: SQL刷题、底层原理(索引、事务、锁)参考书籍: 《高性能MySQL 》《MySQL必知必会》
Mybatis : 核心机制
Redis
计算机网络
《计算机网络自顶向下》《图解HTTP》
TCP、IP
HTTP
操作系统
《操作系统精髓》
进程、线程
4. 项目
写在简历上的项目点一定要熟悉
开发背景-开发过程-开发中的改进-对应技术的相关知识
字节跳动
7.17 一面视频挂
原因:sql语句没写出来
顺丰
一面挂 7.29
原因:一面手撕算法没写出来
1. 趋势科技
一面 8.12
技术面 一个面试官 30分钟左右
- mybatis中 # 和 ¥ 的区别,sql注入问题
- blob类型的使用
- delete truncate 区别
- sql 语句:将两个订单中的信息统计到一个表中
- JDBC 的大致流程
- redis 内存回收策略
- redis过期键的处理方式
- redis 主从复制
- redis 持久化
- redis 的底层数据结构
- redis 的单线程为何快?
- Thread.start() ,run() 区别,sleep(),wait()区别
- Collection 和 Map 架构区别
- HashMap 的 put()和 get()方法底层
- 算法题,不用实操代码,只说大致思路
- 对笔试题的回顾
二面 8.12
技术面,两个面试官 30分钟左右
- 项目经历与细节
- 亮点
- 难点
- 自定义线程池中各参数怎么确认
- 读写锁的实现方式
- 创建线程的两种方式对比
- java中几种同步方式
-
高并发的常用技术-缓存、消息队列简单讲讲
-
Redis 的6中数据结构-着重讲了跳跃表
-
GitHub上最满意的一个项目给介绍下?
-
最满意的一篇博客给介绍下?
-
随便聊聊
其实整体就是根据项目涉及到的知识点来问,自己还得深入了解 。
三面 8.13
hr面 30分钟左右
- 个人基本情况与工作意向城市
- 在项目开发中,遇到和leader不一致时,怎么处理?
- 在项目开发中最大的提升是哪方面
- 怎么保持在更新迭代快的开发领域的竞争力(我回答的是学习能力)
- 可以举一两个例子体现下自己学习能力么
- 对工作的几个最关注的点
- 有什么问题想问我的么
hr面挂
一面挂
一面 8.13
电面 45分钟左右
- 首先谈基本情况和项目谈了25分钟
- 同步服务同步的方式,为什么不可以每分钟的同步
- 如何解决跨节点的join关联查询
- 表结构设计的事项
- 堆排序概念
- Java的四大基本特性-封装、继承、多态、抽象
- Java内存模型-主内存和工作内存
- Java如何保证线程安全(这里自己只答了互斥同步,忘了说非阻塞同步了)
- Jvm中堆和栈的概念
- 自学能力体现在哪(下次回答对JVM的学习吧,别往算法上靠了)
被拉入公司人才库
- 分布式系统需要考虑哪些方面要素
高性能、高可用、可伸缩、可扩展、安全 - 了解或者知道的分布式系统
- synchronized底层原理
- wait() Thread()区别
- 走索引的磁盘IO次数
4. 中兴
一面 电话面 8.28 45min
-
Token过期是怎么处理的
-
怎么保证token的可靠传输,在传输过程中被截走了怎么办
https安全传输协议,以及token是包含用户信息、客户端信息等,仿造很难 -
Spring Security 的核心原理
就是一系列的过滤器 -
OAuth2怎么结合Spring Security实现权限认证的
密码式授权模式 -
Spring 了解哪些知识
IOC AOP -
Redis怎么解决双写一致性问题
两种策略,策略1:先删除缓存,再更新数据库 策略2:先更新数据库,再删除缓存 -
每次传入参数不同,怎么保证走缓存
前端控制传入参数格式,后端对前端传过来的参数进行验证 -
影响Redis最大并发性能的主要因素
内存,持久化策略、主从复制、带宽 -
MySQL的两种引擎的主要区别
锁,事务,索引 -
索引类别以及底层实现机制,B-Tree 索引在两种引擎中的区别
普通,主键、唯一、聚簇、覆盖索引,B+索引和Hash索引 , -
InnoDB行级锁
共享锁、排他锁、间隙锁 -
jvm调优有经验么,怎么指定垃圾回收算法
-
垃圾回收机制
5. 美团
一面 9.4 视频面试
自我介绍时说了自己写了博客 ,结果面试官就开始问博客的内容
- 进程和线程的区别
从操作系统角度 和 JVM 角度答了 - 协程(没听过)
- 进程间的通信方式
信号、管道、消息队列、共享内存 - 进程间使用信号通讯方式时,如果一个进程还在处理之前信号时,又来个信号会怎样?
没答好,我说直接丢弃信号
- 管道 里面的匿名管道 和 命名管道 (没听过)
转而说了下管道的大致实现流程 - 浏览器输入URL 整体流程-包括网络层、链路层、物理层
- DNS解析原理
- 路由选择协议-RIP OSPF 实现原理,算法思路
- 可达性分析算法中,可作为根节点的类型
- 是否可达性分析完后,就会立即回收
(答的不好,本来是往finalize()方法答的,自己却扯到CMS垃圾收集器上去了) - 可达性分析流程以及四种引用概念,四种引用都会被根节点引用到么
(也答的不好,只说前三种会被引用链寻找了)- 类加载过程
- 双亲委派模型
- 手撕 单例模式,寻找数组K个最大值、二分查找
6. 科大讯飞
一面 9.5号上午 现场面 武汉开发
- Java中的循环有几种
- do while 和 while的区别
- for循环中能否改变i的值
- int 和 Integer 的区别联系
- sql语句执行慢怎么分析
- 写个sql语句
- 向表中添加列的sql语句
- 项目主要业务介绍
- 微服务的相关组件介绍
- 为什么用微服务
二面 9.11 上午 30min左右
- 前后端怎么保证沟通,遇到意见不一致怎么解决
- 微服务相比单体应用,优点,缺点
- 关系型数据库和非关系型数据库
- 微服务的高性能,高并发常见机智
- 非科班的话,哪些方面比科班生强呢
- 前端有了解么
- 二叉树,平衡二叉树,红黑树,B+树的应用场景
- 职业规划
- 想成为架构师的话,最近有没有学习哪些技术栈
- 面过哪些公司,大致情况
- 对加班的看法
三面 9.21 hr视频面
直接拒了
6. 龙湖集团
开发岗 一面 9.8上午
龙湖 9.8一面(岗位:上海,成都)
- 常用的数据结构
2 . 集合体系整体架构介绍下 - ArrayList和 LinkedList的使用场景区别
- HashMap中的红黑树,为什么要用
- 红黑树和二叉树区别
- Feign中过滤器的原理(基于动态代理,手撕动态代理)
- Oauth2协议授权流程简单介绍
- Oauth2中后台token是存在服务JVM内存中,如果服务崩了的话,token失效了怎么处理(可以用Redis去实现持久化)
- 手撕List转Map(简单,但是面试官说会Stream么,回答说不会)
- 项目开发中最大的难点是什么?
- 反问阶段
二面 9.9 30分钟 (两个面试官,技术面和hr面同时进行)
- Distinct 和 Group. by
- replace 和 update区别
- 主键,唯一索引,索引区别
- 外键
- 手写单例
- 手撕字符串解析(四则运算和数字)
- Spring Cloud 和 Dubbo区别
- 注册中心Rureka流程解释
- String StringBuilder 的区别
- Java中的容器讲讲
- sleep() 和wait()区别
终面 9.16下午 视频面
只面试了3分钟,就是简单聊聊
7. 招银网络科技
一面 9.10号上午 电话面 30min
-
静态内部类 和 成员类的区别
定义方式,外部对象访问方式 -
abstract 方法可以有static关键字么,为什么不能有
static相当于是类对象的方法,而abstract 方法只是一种声明 -
synchronized 能修饰 abstract方法么
回答的能,其实是不能,因为synchronized既然是同步锁,就肯定要有锁的方式 -
java中对象的生命周期
jvm对象创建-对象使用-垃圾对象回收 -
类加载过程
-
事务的四个特性
-
常用的数据库连接池以及连接池基本原理
-
动态规划的基本原理,举个使用动态规划的例子
-
贪心算法的基本原理
-
动态规划和贪心算法的区别
-
代理模式和装饰者模式区别,分别属于什么模式
答的不好,具体区别没答出来 -
结构型模式的特点
二面 9.20号下午 现场面 40min
- SpringCloud怎么实现服务治理,服务治理Eureka的原理
- Dubbo简单讲讲,性能比较
- RPC协议调用流程
- 负载均衡器Ribbon的实现原理,常见负载均衡策略
- 多线程中的生产消费者实现思路
- ThreadLocal的应用场景,1000个线程时,会不会有内存泄露问题
- HashMap原理
- 平衡二叉树和红黑树区别
- 常用的hash算法,一致性hash算法
- 线程安全实现方式
- 手撕一道算法
- 手写一个sql
- 线程池的各参数概念,IO密集型、CPU密集型下的核心线程池数量
三面 9.20号下午 现场 40min
基本围绕项目在讲
- 系统整体架构,自己负责哪些?
- 为什么引入Redis
- Redis双写一致性解决方案
- 权限认证服务流程
- mybatis的作用?和Spring Data Jpa的比较
- 讲一道算法题的思路,统计一个文本中每个单词的出现次数以及首次,最后出现
四面 9.20号下午 hr 现场 40min
- 为什么考完研不直接去实验室?
8. 阿里
新零售 一面 9.12 电话面50min
- 四种进程间通信方式
- Socket了解么,如果有报文丢失,怎么处理(没回答好)
- TCP vs UDP ,什么场景用UDP
- TCP三次连接过程
- Java中常用的锁以及底层原理(基本上每种锁都将一遍)
- 十大排序算法(每种排序都讲一遍)
- 数据库底层实现原理(B+树)
- 项目整体开发流程,遇到问题,亮点,哪些地方可以改进
- 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?(分而治之/Hash映射)
- HashMap中的 hash算法,其余hash算法呢?
- 重写equals() 和 hash() 方法
- 内存溢出与内存泄露(没答好,应该先从哪些情况会引起溢出,然后怎么解决去答)
9. 贝壳
首先是9.10在贝壳华科宣讲会上进行现场笔试,3道算法题a了2道
9.12 一面、二面技术面、三面hr面(hr面做了一道简单的算法题)
一面 45min左右
- Hystrix 熔断原理,为什么用熔断
- Feign 通信原理
- 负载均衡策略,以及Ribbon原理
- BeanFactory创建Bean过程
- BeanFactory 和FactoryBean的区别
- zuul四种过滤器原理
- 拦截器和过滤器底层原理
- ThreadLocal底层原理,内存泄漏问题
- 四种引用
- 弱引用的使用场景
- 虚引用的使用场景
- 删除list集合中满足条件的节点的方式
- 手撕一道DP
- Sql查询慢怎么定位
- MySQL索引原理,有索引的情况下怎么插入数据
一面就被吓到了,这问的原理问题也太多了,结果没想到进入二面了。
二面 40min
- 整个项目的一个开发经历(重点是讲自己的一些思考感悟,而不是按照简历来)
- 引入Redis的整个思考过程
- Redis中用的哪种数据结构,底层原理
- Redis中Hash的使用场景
- 线程池并行计算的方式( Future 以及 普通的execute,这里答的太模糊了,得熟悉下)
- 数据库的分页机制,以及一个场景分析( limit 0,5 为什么比 limit 5000,5005快)
- 聊聊职业规划,指点下简历应该怎么写啦,应该把重心放在哪之类的
三面是hr面,聊的挺开心的,中间还穿插做了一道简单的算法题,只用说大致思路
一面+二面+三面:(视频面)
- Redis数据类型的底层数据结构,String类型和SortedSet类型
SDS字符串和跳跃表
- 中断处理中cpu现场环境存储在哪里
- MySQL中有a,b两列各自建立索引,在进行查询的时候,走哪个索引,怎么设计
- 三面主要问项目中的消息中间件和场景题
- 代码题目:leetcode 85最大矩形 , 判断链表有无环,手写hashmap
一面(视频面)(1h20min)
- 代码题:单例模式,数组的题
- 阻塞队列实现
- 怎么设计一个线程池的各个参数,各种场景下线程池的设计
CPU密集型,最大线程数是CPU的核数,IO密集型,最大线程数是CPU的核数的两倍
- cas底部是怎么实现的保证原子性(底部到硬件指令)
- 最后,讲一下虚拟机的知识点吧
- 只记得一些典型的问题了,一面还是基础问的比较多,细致~
二面(电话面)
- 聊项目.gif(感受到一丝凉意)
- hadoop和spark区别,为什么用spark,优势
- 为什么用这个消息队列,高可用,保证消息不丢失的机制
- 为什么用线程池,线程池有哪些,以及应用场景
- 垃圾回收的知识,为什么要垃圾回收,可达性分析,回收算法,垃圾回收器
- 写sql语句,查询各门科目成绩都>80的学生姓名
SELECT name FROM student where ....
- 聚簇索引和非聚簇索引
- 聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据
- mysql事务和隔离级别,默认的隔离级别
读提交,读未提交,可重复读,串行化,MySQL 的默认隔离界别是可重复读
sychronized和可重入锁的区别
关键字,后者是一个类对象
- ORM框架——mybatis
- Spring和Springboot (我以为会被挂的地方,不太懂Spring)
三. 网易(杭州)
几乎和百度同时进行~
一面(视频面)
- 聊项目.jpg,主要聊了分布式的项目,源码等等
- 那我们来问一下java知识吧
- java内存区域
- java有哪些等待通知机制
wait() 和 notify()
- Countdownlatch了解嘛,底层怎么实现的?
CountDownLatch是什么?
jdk1.5开始concurrent包里提供的,并发编程工具类。
CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。
CountDownLatch如何工作?
CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。
API
countDownLatch.countDown()
countDownLatch.await();
CountDownLatch应用场景例子
CountDownLatch底层原理
CountDownLatch通过AQS(AbstractQueuedSynchronizer)里面的共享锁来实现的。
ReentrantLock也是使用AQS
- 说下AQS
- 什么时候申请堆外内存
- 内存映射以及内存映射的方法是哪个
- 分布式缓存redis,怎么做成分布式
- 一致性hash
- 不用redis cluster怎么做?
- redis cluster一个宕机了会有哪些处理?
- 分布式数据库了解吗?
- 发布订阅模式,以及一个消费者组集群模式怎么消费
- 了解Spring吗(不了解不清楚别问我我没看)
- web下服务器怎么做负载均衡的?
二面(视频面)
- 项目和场景题
- 负载均衡的几种方法
- 缓存击穿,雪崩的应对方法,详细讲
HR面(现场面)
- 常规HR问题
四. 阿里(等最终通知)
一面(电话面)
- 项目相关:有调研其他的消息中间件吗?为什么用rocketmq?
- 线程池的原理以及各种线程池的应用场景
- 线程池中使用有限的阻塞队列和无限的阻塞队列的区别
- 如果你发现你的sql语句始终走另一个索引,但是你希望它走你想要的索引,怎么办
- mysql执行计划
- 数据库索引为什么用b+树(磁盘io的深入了解)
- 你在做sql优化主要从哪几个方面做,用到哪些方法工具
二面 + 三面 + 交叉面 + HR面(电话面)
(我已经忘完了,忘记记录面经了😭)
在坐地铁的路上面了个疑似交叉面的面试,刚开始以为是挂了,然后被别的部门捞了,也没听清楚是什么部门,内心很崩溃,当时面的感觉是秋招面的最差的一次。
却意外地等到了HR面,才知道前一面可能是交叉面(来自从没体验过交叉面的疑惑😅)~~
面试官让我帮忙推没有面过的简历,太难找了,问了别的实验室也没有,尽力啦,等最终通知!!
五. 美团(上海)
一面(电话面)
太太遥远了,不记得了.jpg
二面+三面+HR面(现场面)
距离一面有1个多月,期间收到了HR通知去上海现场面,但当时有些懒得跑,想等南京现场面,就木有去,终于等到南京现场面
- 线程池的原理以及各种线程池的应用场景
- 项目深挖,画出架构图,加MQ源码
- MQ不能保证只会消费一次,如果让你在MQ中加入,你要怎么设计
- 消息去重保证幂等性有哪些方法
我是只有七秒记忆么,这是最近面的一个了,大多还是不记得了😂
六. 小米(南京)
一面(现场面 2h)
去了南京小米公司面了一波,整整两个小时让我怀疑人生
- 问了研究方向
- 项目中使用的MySQL版本号,使用哪个引擎,为什么
- MySQL两个引擎的区别,为什么INNODB使用聚簇索引,而不用MyISAM行指针的形式
- SQL优化的几个方面
- Redis的数据类型,SortedSet底部实现
跳跃表
- Redis分片的几种形式,Redis Cluster
- 介绍一下JVM知识
- Java线程池原理及其应用场景
- Concurrent并发包里几个类介绍一下
- HashMap求hash值的时候,无符号右移16位的意义
- 解决hash冲突的几种方法,在哪些地方用哪种
- tcp粘包和拆包的方法,tcp可靠性通过哪几个方面保证
- http无状态的,session和cookie存储在哪里
- 调用一个模块的服务的请求参数是加在哪里,修改http请求头来保持请求的状态
- 一个服务部署在多个服务器上,怎么负载均衡,怎么让请求打到某个服务器上,怎么寻址,一个服务器宕机怎么感知
- io多路复用,select,poll,epoll的底部原理
- 手写一致性hash
- 算法题:两个集合求交集,其中相同的数字出现多次就输出多次,无序
二面(电话面)
不想再跑一趟了,向面试官改成了电话面
- 避免幻读的方法,MVCC中怎么避免幻读的某个方面
- Full GC什么时候发生,各种垃圾回收器,哪些是年轻代,哪些是老年代
- 数据库索引结构,为什么是B+树
- 项目ing
- 感觉面的不太好,二面面试官说有三面,没等来三面,等来了Offer Call
七. 华泰(南京)
一面
- 项目问题ing....
- http的get和post区别
- 大量数据不能一次性放到内存,出现频率最大的数字,数据倾斜的极端情况怎么办
课题考察
分布式全局唯一ID生成器
- 耗费心血,熬夜三天
HR面(5分钟)
主要问成绩,家庭情况和职业规划
已经收到体检通知啦,希望一切顺利,加油
八. 招商银行信用卡中心(等最终通知)
初面
- 项目里用了什么设计模式,详细讲一下
- 项目ing
- 微服务
终面(技术+HR面)
-
问了研究方向....详细讲讲看
-
项目问题
-
HR问题:如果转前端可以吗,学习要多久(回答的是更想做后端,害怕.jpg)
秋招已经基本结束了,希望遵循本心,做出一个不会后悔的选择叭~~祝大家Offer多多~