四月份的时候因为换工作的缘故,陆续加入了华为、蚂蚁、字节跳动、PDD、百度、Paypal 的社招面试,除了字节跳动流程较长,我被动完结面试以外,其余的都顺利拿到了 Offer。
最近工夫略微拮据点了,写个面经,心愿对大家找工作有所帮忙。
面试体验
上面就是我各家公司面试的一个体验
华为
1. 简历投递形式:在 BOSS 直聘上分割的华为 HR。
2. 线上口试:在正式面试之前,会有线上口试环节,3 道算法题,难易水平由浅入深,做进去两道根本就没问题了。
3. 一面:视频面试,这轮面试会有两个面试官,每个面试官大略会面试 45 分钟,面试内容偏差 Java 根底为主;最初会写个算法题,不过也不简单。
4. 二面:这轮次要是几个领导一起电话面试,可能会问一些我的项目相干的内容,不过更多是框架相干的,不会波及到很底层的技术细节。
5.HR 面试:沟通一下职级和薪资状况,华为的薪资是由基本工资和绩效工资组成的,而后年初可能是 2 个月,我尝试去 argue 了一下薪资,然而如同并没有什么卵用。
总结:华为面试官和 HR 都很 Nice,整体面试难度中规中矩,都是偏重于根底和简略的算法,另外面试流程也很快,基本上两周之内完结没问题。不过当初华为社招根本是 OD,也就是挂靠到外企德科那边,不是正式员工,所以日后升职加薪可能会有所影响,这点大家须要本人思考下。
蚂蚁金服
1. 简历投递形式:敌人间接内推的,内推过后一周之内就分割面试了。
2. 一面:线上电话面试,杭州打来的,次要是介绍下我的项目,他会依据我的项目中的技术点,进行一些探讨。印象比拟深的是,过后咱们探讨下分布式一致性的解决方案,但感觉他对我的答复不太称心,哈哈。最初会发一个链接过去做题,题目次要考查 Java 多线程的应用,我过后的题目是在某种场景下找到最快的领取形式。
3. 二面:上海打来的电话面试,这轮是主管面试,也是我的项目为主,而后拓展开去很多根底问题,比方分布式锁、分布式一致性、事物、Java 线程等等。这轮没有做题,聊了大略一个小时,就完结了。
3. 三面:这次是 2 轮面试官的主管来面试,让我间接去上海蚂蚁 Z 空间面试。这轮的话,次要是讲我的项目或者是说更宏观一点的货色,没有具体技术细节。
4.HR 面试:因为我面试的 P6,所以 3 轮过后就间接 HR 面试了,HR 偏重阿里味的考查,比方乐观、皮实等等。
总结:面试难度适中,流程基本上一周一面,整体下来一个月,当然不包含后续的背调、体检之类的,因而如果要面试阿里,能够提前一些开始面试,而后一边面试一边复盘总结。
PDD
1. 简历投递形式:BOSS 直聘找到 pdd HR。
2. 一面:视频面试。前半小时聊我的项目,后半小时做题。
3. 二面:视频面试。前半小时聊我的项目,后半小时做题。
4. 三面:视频面试。前半小时做题,后半小时聊我的项目。
5.HR 面试:确定薪资,因为 PDD 的强度十分大,大家能够大胆一点要薪资,不然进去当前悔恨就晚了。
总结:PDD 的面试流程非常简单粗犷,就是做题加上聊我的项目,一半一半,题目难度根本是 Leetcode 上的 Medium 难度,我面试下来也没有碰到很偏很怪的题目,面试筹备的时候,把 Leetcode 下面常考的 200 题刷一刷就没问题了。尽管最初没有去 PDD,然而 PDD 的面试官和 HR 都给我留下很好的印象,面试流程很难受,就像和敌人交换一样;PDD 的流程很快,大略两周之内出后果,因为不同公司的流程不一样,HR 那边始终等了我好几周,能够让我拿到其余 Offer 了再回复她,这点上真的特地感谢。
百度
1. 简历投递形式:BOSS 直聘找到 HR。
2. 一面:视频面试。分享我的项目,而后问一些技术细节,次要偏差 Java 根底、缓存、分布式这块。
3. 二面:视频面试。这轮和上轮差不多,不过会问更多的技术细节,让我在线写了一个生产者消费者模式,还有一个算法题。
4. 三面:视频面试。主管面试,比拟轻松一些,聊聊工作、聊聊布局就完了。
5.HR 面试:确定薪资,百度的薪资组成是 Base 加上股票。如果有其余公司的 Offer,能够大胆 argue 一下,HR 可能会有各种理由说不能加了,然而肯定要保持 argue,我体验下来,argue 的空间还是很大的。
总结:面试侧重于纯技术,所以对于技术细节,肯定要搞清楚弄明确;至于算法,百度考查的不深。面试流程很快,大略一周多就完结了。
经验总结
多家面试总结下来,考查的范畴都很广,包含基础知识、我的项目和算法。
- 基础知识这块,须要花大量工夫筹备每一个细节,知其所以然,这样能力面试的时候问起来,都能有条有理。比方 Java 的 AQS 原理,多线程,JVM 内存等,框架的话,有 Spring,MySQL、Redis、Kafka、ES、ZK 等,都要非常相熟。
- 我的项目,阿里比拟重视我的项目,所以不仅要相熟我的项目做了什么事件,而且要提炼出我的项目中的闪光点或者说不一样的中央,为什么要抉择这种技术、架构怎么设计、当前如何扩大、出问题了怎么定位等等;这些在面试之前都要想分明。
- 算法,这点没的说,就是要多刷题。面试了这么多公司,除了阿里,其余公司的每一轮都会要求做算法题,所以在面试之前要对各种常见算法了然于心,比方 DFS、BFS、树、贪婪算法、常见 DP 等等,有工夫的话多去刷刷题找感觉。
面试题分享
这部分分享一下我在面试筹备过程中,以及面试时遇到的常考根底题,大家能够针对题目温习一下。所有的面试题及答案我都曾经整顿成 PDF,须要的可点击下方链接支付~
最全学习笔记大厂真题 + 微服务 +MySQL+ 分布式 +SSM 框架 +Java+Redis+ 数据结构与算法 + 网络 +Linux+Spring 全家桶 +JVM+ 高并发 + 各大学习思维脑图 + 面试汇合
1. Java 根底
1.1 Hashmap 与 concurrentHashMap(重点)
1.2 汇合相干问题
1.3 Java 泛型的了解
1.4 跳表(ConcurrentSkipListMap)的查问过程是怎么样的,查问和插入的工夫复杂度?
1.5 java 字节流 字符流
1.8 包装类型和根本类型比拟问题
1.9 为什么重写 equals 和 hashcode
1.10 stringBuilder 和 stringBuffer 的区别
1.11 Java 序列化的原理
1.11 Java8、9、10、11 的一些新个性介绍
1.12 java 中四种修饰符的限度范畴。
1.13 Object 类中的办法。
1.14 浅拷贝 深拷贝
1.15 接口和抽象类的区别,留神 JDK8 的接口能够有实现。
1.16 动静代理的两种形式,以及区别。
1.16 传值和传援用的区别,Java 是怎么样的,有没有传值援用。
1.17 一个 ArrayList 在循环过程中删除,会不会出问题,为什么。
1.18 Exception 和 Error 区别
1.19 new 关键字和 newinstance() 办法
1.20 Map、List、Set 别离说下你晓得的线程安全类和线程不平安的类
1.21 Java 避免 SQL 注入
1.22 反射原理及应用场景
1.23 static Vs Final?如何让类不能被继承
1.24 内存泄露?内存溢出?
1.25 重写 Vs 重载
1.26 Lambda 表达式实现
1.27 ClassNotFoundException 和 NoClassDefFoundError 的区别
2. 并发、多线程
2.1 volatile 关键字 原理
2.2 对 java 中锁的了解
2.3 乐观锁 乐观锁
2.4 对 CAS 的了解,java 中的 CAS,如何不必 unsafe 实现 CAS
2.5 java 线程创立形式
线程 run 和 start 的区别?两次 start 同一个线程会怎么样?
2.6 Java 线程池的原理?线程池有哪些?线程池参数是什么?
2.7 ThreadLocal 及其利用场景
2.8 对线程平安的了解
2.9 get 须要加锁么,为什么?
2.10 Lock 的底层原理。synchronized、Lock、ReentrantLock、ReadWriteLock。
2.11 AtomicInteger 怎么实现原子批改的?
2.11 分布式环境下,怎么保障线程平安。
2.12 产生死锁的四个必要条件?
2.13 如何中断线程
2.14 线程的状态都有哪些。
2.15 wait、notify、notifyAll、await、signal、sleep、yield
2.16 Callable 和 Future 的理解。
2.17 synchronized 关键字的用法,优缺点。
2.18 可重入锁的用途及实现原理,写时复制的过程,读写锁,分段锁
2.19 ABC 三个线程如何保障程序执行。
2.20 双线程交替打印奇偶(阿里)
3. JVM
3.1 常见 GC 算法、CMS 收集器、G1
3.2 jvm 内存模型 && Java 内存模型
3.3 怎么判断对象可被回收?GC 可达性剖析中哪些算是 GC ROOT?
3.4 eden survivor 区的比例,为什么是这个比例,eden survivor 的工作过程。
3.4 fullgc 是否能够回收办法区
3.5 什么对象会进老年代?为什么新生代应用复制算法?
3.6 被 GC 判断为 ” 垃圾 ” 的对象肯定会回收吗
3.7 强制 young gc 会有什么问题?
3.8 类加载的过程 Java 为什么要设计双亲委派模型?
3.9 什么时候会触发 minor gc,什么时候会触发 full gc?
3.10 G1 和 ZGC 的区别
3.12 你晓得强援用、弱援用和软援用吗? GC 对他们执行怎么的操作。
3.13 JVM 办法栈的工作过程,办法栈和本地办法栈有什么区别。
3.14 JVM 的栈中援用如何和堆中的对象产生关联。
3.15 逃逸剖析技术。
3.16 Java 是否能够 GC 间接内存。
3.17 罕用的 JVM 调优参数。
3.6 具体的性能调优步骤吗?fullgc 的时候会导致接口的响应速度特地慢,该如何排查和解决。
3.18 dump 文件的剖析。
3.19 Java 有没有被动触发 GC 的形式
3.20 如果当初在同一台机器上开两个 java 我的项目,有几个 java 虚拟机?
3.21 javac 编译期工作流程
4. Spring
4.1 spring IOC 过程
4.2 循环依赖怎么解决的
4.3 spring AOP,动静代理是怎么实现的
4.4 spring BeanDefinition 作用
4.5 spring @Autowired (@Resource, 相似)实现原理
4.6 bean 的生命周期
4.7 Bean 的默认作用范畴是什么?其余的作用范畴?
4.8 Spring 的单例是怎么实现的?
4.11 SpringMVC 不同用户登录的信息怎么保障线程平安的?
4.12 Spring 用了哪些设计模式。
4.13 Spring 注入 bean 的形式。
4.14 什么是 IOC,什么是依赖注入。
4.15 Spring 具备什么特点(IOC 和 AOP)
4.16 几种 scope 区别,aop 实现有哪几种实现,
4.17 spring 的事务及实现模式
4.19 对 Spring、SpringMVC、springBoot 了解
4.20 @transactional 注解在什么状况下会生效,为什么。
4.21 SpringMVC 的 Controller 是如何将参数和前端传来的数据一一对应的。
4.23 Spring 如何保护它领有的 bean。
4.24 自定义注解的实现。
4.25 如何本人设计 IOC 框架
4.26 Quartz 是如何实现定时工作的。
4.18 servlet 的生命周期,怎么判断是 get 申请还是 post 申请,后盾实现 session 共享的办法。Java web 过滤器的生命周期?过滤器和拦截器的区别。
4.19 BeanFactory 和 FactoryBean 的区别
4.20 Spring 中配置 id 或 name 雷同的 Bean 可能引发的问题及解决方案
4.21 避免 Web 表单反复提交的办法
5. 消息中间件
5.1 kafka 有哪些组件,kafka controller 选举过程,kafka leader 重选举过程
5.2 kafka 最早是为了解决什么问题设计的
5.3 为什么 kafka 用 zookeeper 来存储 metadata,而不是用 db 来存储
5.4 kafka 只有一次生产 只有一次生产怎么做
5.5 kafka 的生产模式?kafka 怎么做有序生产?kafka 重生产解决?音讯失落怎么解决?
5.6 Kafka 的 Replicas 的作用?
6. 算法
6.1 B+ 树
6.2 hash 和 B + 树的区别?别离利用于什么场景?哪个比拟好?
6.3 红黑树理解么,工夫复杂度? 五个个性
6.4 堆排序的工夫复杂度
6.5 疾速排序,堆排序,插入排序
6.6 一致性 Hash 算法,一致性 Hash 算法的利用
限于篇幅,我没有给出答案,感兴趣的能够点击下方链接支付!!!
最全学习笔记大厂真题 + 微服务 +MySQL+ 分布式 +SSM 框架 +Java+Redis+ 数据结构与算法 + 网络 +Linux+Spring 全家桶 +JVM+ 高并发 + 各大学习思维脑图 + 面试汇合