Offer经验分享 - 蚂蚁金服、字节跳动、PDD、百度、华为、Paypal - Java社招面经 (2)

2轮面试:视频面试。3个人轮流面试,时长3小时,这个就看面试管的风格了,有的偏向于纯算法,有的偏向于基础。但是时长比较长,需要大家提前准备好。

两轮面试之后,如果顺利的话HR就会去申请Offer,很快就拿到Offer了。

总结:效率很高,面试官也很专业。薪资组成由Base加上股票组成,今年股价涨了不少,所以去年入职的同学赚了不少,哈哈。

字节跳动

简历投递方式:猎头

1轮面试:基础技术面试。不讲项目,直接问基础,包括操作系统、计算机网络、Java基础、数据库、缓存、分布式等等,问的面很广。最后写一道算法题。

2轮面试:项目和系统设计面试。侧重于系统设计,比如设计朋友圈、12306系统等,后面也需要写算法题。

3轮面试:可能第二轮没有表现好,重新安排了面试官接着面试第二轮。这一轮也考察基础和系统设计,顺利通过了。

4轮面试:交叉面试,这轮面试体验比较糟糕,面试官中途打电话、还处理了个线上的issue,哈哈。

由于当时已经有好几个Offer,加上面试过程比较长,基本一周一面,所以也不想拖太久了。后面HR约最后一轮技术面的时候,我也直接拒绝了。

总结:字节的面试是所有面试里面难度最大的,因为基础的考察面很广,而且算法题不是那种常考的题目,有时候会碰到Hard难度,也都是看运气了。如果要去面试字节的话,算法一定要提前多准备,尽量多刷一些,以防到时连题目都没见过,要你15分钟内写出来也就很难了。

经验总结

多家面试总结下来,考察的范围都很广,包括基础知识、项目和算法。

基础知识这块,需要花大量时间准备每一个细节,知其所以然,这样才能面试的时候问起来,都能头头是道。比如Java的AQS原理,多线程,JVM内存等,框架的话,有Spring,MySQL、Redis、Kafka、ES、ZK等,都要十分熟悉。

项目,阿里比较注重项目,所以不仅要熟悉项目做了什么事情,而且要提炼出项目中的闪光点或者说不一样的地方,为什么要选择这种技术、架构怎么设计、以后如何扩展、出问题了怎么定位等等;这些在面试之前都要想清楚。

算法,这点没的说,就是要多刷题。面试了这么多公司,除了阿里,其他公司的每一轮都会要求做算法题,所以在面试之前要对各种常见算法了然于心,比如DFS、BFS、树、贪心算法、常见DP等等,有时间的话多去刷刷题找感觉。

面试题分享

这部分分享一下我在面试准备过程中,以及面试时遇到的常考基础题,大家可以针对题目复习一下。

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfgpg.html