一面:
重载和重写,重载可以返回值不同吗,返回值不同会发生什么
必须要参数不同
Hashmap有什么优点有什么缺点,和TreeMap的对比, 桶里链表无限拉长会怎么样
Hashmap 数组顺序被打乱,没有顺序性
排序算法,排序算法不稳定是什么意思,各种排序算法的适用场景
Arraylist和Linkedlist的区别,加快链表的查找(跳表)
查找一个很长的数组里第K大的数
维护一个最小堆
Jvm内存结构,栈放什么,堆放什么,和数据结构里的栈和堆有联系吗,说一说数据结构里的栈和堆,栈有什么应用场景,堆有什么适用场景
堆:优先队列
栈: 实现算法,递归
复试:
1,hashmap的结构,扩容阈值
数组和链表,0.75
2,两个线程对hashmap同时扩容的后果
3,gc回收算法,垃圾回收器g1,cms解释
4,安卓的activity和fragement的区别(简历有安卓相关)
5,springmvc的流程
6,对微服务的了解,解释zookeeper
7,jdk 1.8新特性,jdk最新版本是几
12
8,spring常用注解哪些
终试:
1.聊项目,画项目结构图,流程图 ,项目细节
2.AOP,IOC解释
3.手写代码,在10亿的商品日志中找出出现最多的一百个商品
4.聊人生,问手上的offer
5.url的组成,一个网址如何找到对应的机器,对应的接口和服务
6.json的底层实现
7.https协议
hr:
闲聊
1 java后端技术
javase
《核心技术卷1》:面向对象(多态、Object类、关键字)、接口与内部类、集合、泛型、反射
黑马视频
并发
多线程
《Java并发编程的艺术》
慕课网视频:Java并发编程与高并发解决方案
设计模式
《大话设计模式 》:掌握常用的设计模式以及在简历上写到大的框架中的典型应用场景
慕课网视频:java设计模式精讲 Debug 方式+内存分析
java虚拟机
只需要掌握重点
《深度理解java虚拟机》:内存区域、垃圾回收、类加载
框架
掌握核心机制与大致原理
Spring:掌握IOC、AOP、事务
SpringMVC 与 Servlet: 大致处理流程
SpringBoot :自动装配
SpringCloud:各组件核心机制原理 慕课网廖师兄视频
后端进阶
看看就好,能吹出来
包括了分布式理论,以及常见分布式技术比如负载均衡,zookeeper,消息队列,分布式缓存等等。当然,这里面也包括系统架构方面的知识,以及RPC,微服务等内容。
2. 数据结构与算法
自学阶段最好跟着牛客左程云视频边看边刷LeetCode
准备面试阶段:
《剑指offer》
LeetCode-CYC2018
公司真题
3. 计算机基础
数据库
MySQL: SQL刷题、底层原理(索引、事务、锁)参考书籍: 《高性能MySQL 》《MySQL必知必会》
Mybatis : 核心机制
Redis
计算机网络
《计算机网络自顶向下》《图解HTTP》
TCP、IP
HTTP
操作系统
《操作系统精髓》
进程、线程
4. 项目
写在简历上的项目点一定要熟悉
开发背景-开发过程-开发中的改进-对应技术的相关知识
求职情况
从2018年10月份以来开始慢慢摸索Java的学习,从Java基础学到JavaEE,到数据库,计算机网络,操作系统这些知识,然后又学习并发,Java虚拟机,设计模式这些,自己学的时候其实也不只是背概念,也会去看源码之类,看视频之类的,同时,也会去了解和项目相关的框架的一些底层原理什么的,但是由于真的缺少实践经验,学完忘、忘完学,真的痛苦。
身旁没一个人学这些,学起来也是慢慢的摸索,去论坛搜,技术群问,去啃书,本以为可以按照这种进度,19年上半年再刷刷算法,多刷刷面经就可以好好备战秋招了。可是实验室突然来了项目,还是去外地出差做系统,这一出差就是从3月份到8月份,出差时期学习效率则差,导致算法只断断续续刷了剑指offer 2遍,leetcode也只简单的刷了100道左右。
算法题刷少了,笔试就悲催了,一般就能ac一半,很多互联网大厂都是笔试没过。侥幸面试的几家大厂还全是免笔试的。非科班再加上基础确实没那么牢固,导致对于大厂的视频面或者电话面的时候,面的一塌涂地,没有走到二面的。也只有现场面的时候,能和面试官多聊聊,碰到不会的自己也不会慌,感觉自己现场面还不错,面了8家左右的现场面,都走到终面了。
到现在,自己的互联网秋招之路就结束了,总结下自己去不了互联网的原因就是,一是自己开始就没有确定一定要去互联网搞技术,导致学习起来没有想象的努力,也没有自己想象的那么上进,总是假装努力,假装认真。二是缺少实习经验,这点还是很吃亏。三是笔试算法这一快是真的重要,靠临时的刷题提高太难了。
接下来就是投投研究所、银行之类的的了,三方10月中旬才下来,自己还有选择空间,加油!
远景智能 - offer
龙湖数字科技部仕官生-offer
中兴-offer
贝壳找房-offer
招银网络-offer
oppo-offer
科大讯飞-hr面拒
海康威视-终面拒
趋势科技-hr面挂
阿里-两次一面挂
美团,虎牙、字节提前批、顺丰提前批-一面挂
滴滴、拼多多、携程、百度、旷视、华为、网易互娱、苏宁、猿辅导、360、大疆、商汤等-笔试挂
虾皮、zoom、蘑菇街提前批、百度提前批-简历挂
0. 面试经验纪要
- 简历上写的东西一定要熟练,不能只局限于会用
- 现场面试时,很多时候面试官提的问题自己不太清楚的时候,不要慌,这可能是压力面,尽力往自己熟悉的地方扯。同时,保持幽默,面试一直面试也挺累的,如果能在和你交谈愉快,自会会有印象分。
字节跳动
7.17 一面视频挂
原因:sql语句没写出来
顺丰
一面挂 7.29
原因:一面手撕算法没写出来
1. 趋势科技
一面 8.12
技术面 一个面试官 30分钟左右
- mybatis中 # 和 ¥ 的区别,sql注入问题
- blob类型的使用
- delete truncate 区别
- sql 语句:将两个订单中的信息统计到一个表中
- JDBC 的大致流程
注册驱动
- redis 内存回收策略
- redis过期键的处理方式
- redis 主从复制
- redis 持久化
AOF , RDB 快照
- redis 的底层数据结构
- redis 的单线程为何快?
纯内存操作
- Thread.start() ,run() 区别,sleep(),wait()区别
start方法可以启动线程,run方法只会运行当前线程
- Collection 和 Map 架构区别
- HashMap 的 put()和 get()方法底层
- 算法题,不用实操代码,只说大致思路
- 对笔试题的回顾
二面 8.12
技术面,两个面试官 30分钟左右
- 项目经历与细节
- 亮点
- 难点
- 自定义线程池中各参数怎么确认
CPU 密集型和 IO密集型
- 读写锁的实现方式
- 创建线程的两种方式对比
继承Thread类和重写Runable接口
-
高并发的常用技术-缓存、消息队列简单讲讲
-
Redis 的6中数据结构-着重讲了跳跃表
-
GitHub上最满意的一个项目给介绍下?
-
最满意的一篇博客给介绍下?
-
随便聊聊
其实整体就是根据项目涉及到的知识点来问,自己还得深入了解 。
2. 虎牙直播
一面挂
一面 8.13
电面 45分钟左右
- 首先谈基本情况和项目谈了25分钟
- 同步服务同步的方式,为什么不可以每分钟的同步
- 如何解决跨节点的join关联查询
- 表结构设计的事项
- 堆排序概念
- Java的四大基本特性-封装、继承、多态、抽象
- Java内存模型-主内存和工作内存
- Java如何保证线程安全(这里自己只答了互斥同步,忘了说非阻塞同步了)
- Jvm中堆和栈的概念
- 自学能力体现在哪(下次回答对JVM的学习吧,别往算法上靠了)
被拉入公司人才库
3. 远景智能
8.23现场面,共四面,成功拿到offer,只记得几个印象深刻的问题了,
- 分布式系统需要考虑哪些方面要素
高性能、高可用、可伸缩、可扩展、安全 - 了解或者知道的分布式系统
- 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调优有经验么,怎么指定垃圾回收算法
-
垃圾回收机制
综合面试 9.20傍晚 现场面 30min
上来就是英文自我介绍,然后聊聊家常
最后说基本录取了,两轮面试都是优秀
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面,聊的挺开心的,中间还穿插做了一道简单的算法题,只用说大致思路
最后说两周左右给结果,希望能过
10. oppo