Offer经验分享 - 蚂蚁金服、字节跳动、PDD、百度、华为、Paypal - Java社招面经
年中的时候因为换工作的缘故,陆续参加了华为、蚂蚁、字节跳动、PDD、百度、Paypal的社招面试,除了字节跳动流程较长,我主动结束面试以外,其他的都顺利拿到了Offer。
最近时间稍微宽裕点了,写个面经,希望对大家找工作有所帮助。
面试体验
下面以时间先后顺序,分享下我在不同公司面试的体验。
华为
简历投递方式:在BOSS直聘上联系的华为HR。
- 线上笔试:在正式面试之前,会有线上笔试环节,3道算法题,难易程度由浅入深,做出来两道基本就没问题了。
- 1轮面试:视频面试,这轮面试会有两个面试官,每个面试官大概会面试45分钟,面试内容偏向Java基础为主;最后会写个算法题,不过也不复杂。
- 2轮面试:这轮主要是几个领导一起电话面试,可能会问一些项目相关的内容,不过更多是框架相关的,不会涉及到很底层的技术细节。
- HR面试:沟通一下职级和薪资情况,华为的薪资是由基本工资和绩效工资组成的,然后年终可能是2个月,我尝试去argue了一下薪资,但是好像并没有什么卵用。
总结:华为面试官和HR都很Nice,整体面试难度中规中矩,都是偏重于基础和简单的算法,另外面试流程也很快,基本上两周之内结束没问题。不过现在华为社招基本是OD,也就是挂靠到外企德科那边,不是正式员工,所以日后升职加薪可能会有所影响,这点大家需要自己考虑下。
蚂蚁金服
简历投递方式:朋友直接内推的,内推过后一周之内就联系面试了。
- 1轮面试:线上电话面试,杭州打来的,主要是介绍下项目,他会根据项目中的技术点,进行一些讨论。印象比较深的是,当时我们讨论下分布式一致性的解决方案,但感觉他对我的回答不太满意,哈哈。最后会发一个链接过来做题,题目主要考察Java多线程的使用,我当时的题目是在某种场景下找到最快的支付方式。
- 2轮面试:上海打来的电话面试,这轮是主管面试,也是项目为主,然后拓展开去很多基础问题,比如分布式锁、分布式一致性、事物、Java线程等等。这轮没有做题,聊了大概一个小时,就结束了。
- 3轮面试:这次是2轮面试官的主管来面试,让我直接去上海蚂蚁Z空间面试。这轮的话,主要是讲项目或者是说更宏观一点的东西,没有具体技术细节。
- HR面试:因为我面试的P6,所以3轮过后就直接HR面试了,HR侧重阿里味的考察,比如乐观、皮实等等。
总结:面试难度适中,流程基本上一周一面,整体下来一个月,当然不包括后续的背调、体检之类的,因此如果要面试阿里,可以提前一些开始面试,然后一边面试一边复盘总结。
PDD
简历投递方式:BOSS直聘找到pdd HR。
- 1轮面试:视频面试。前半小时聊项目,后半小时做题。
- 2轮面试:视频面试。前半小时聊项目,后半小时做题。
- 3轮面试:视频面试。前半小时做题,后半小时聊项目。
- HR面试:确定薪资,因为PDD的强度非常大,大家可以大胆一点要薪资,不然进去以后后悔就晚了。
总结:PDD的面试流程非常简单粗暴,就是做题加上聊项目,一半一半,题目难度基本是Leetcode上的Medium难度,我面试下来也没有碰到很偏很怪的题目,面试准备的时候,把Leetcode上面常考的200题刷一刷就没问题了。虽然最后没有去PDD,但是PDD的面试官和HR都给我留下很好的印象,面试流程很舒服,就像和朋友交流一样;PDD的流程很快,大概两周之内出结果,因为不同公司的流程不一样,HR那边一直等了我好几周,可以让我拿到其他Offer了再回复她,这点上真的特别感激。
百度
简历投递方式:BOSS直聘找到HR。
- 1轮面试:视频面试。分享项目,然后问一些技术细节,主要偏向Java基础、缓存、分布式这块。
- 2轮面试:视频面试。这轮和上轮差不多,不过会问更多的技术细节,让我在线写了一个生产者消费者模式,还有一个算法题。
- 3轮面试:视频面试。主管面试,比较轻松一些,聊聊工作、聊聊规划就完了。
- HR面试:确定薪资,百度的薪资组成是Base加上股票。如果有其他公司的Offer,可以大胆argue一下,HR可能会有各种理由说不能加了,但是一定要坚持argue,我体验下来,argue的空间还是很大的。
总结:面试侧重于纯技术,所以关于技术细节,一定要搞清楚弄明白;至于算法,百度考察的不深。面试流程很快,大概一周多就结束了。
Paypal
简历投递方式:内推。
- 1轮面试:视频面试,2个人轮流面试,时长2个小时。各种Java的细节,从包装类、多线程到分布式、缓存等等。每轮都需要做题,Medium难度。
- 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
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算法的应用
限于篇幅,我没有给出答案,感兴趣的可以关注公众号『后端精进之路』,发送『面经』获取完整的答案, pdf有80页左右。
本文由『后端精进之路』原创,首发于博客 http://teckee.github.io/ , 转载请注明出处
搜索『后端精进之路』关注公众号,立刻获取最新文章和价值2000元的BATJ精品面试课程。
Offer经验分享 - 蚂蚁金服、字节跳动、PDD、百度、华为、Paypal - Java社招面经的更多相关文章
- 面试半年!三面阿里,四面蚂蚁金服,居然倒在了一个Java集合之Map上?
Map接口 Map与Collection并列存在.用于保存具有映射关系的数据:key-valueMap中的key和value都可以是任何引用类型的数据Map中的key用set来存放,不允许重复,即同一 ...
- 剧透 & 报名 | 蚂蚁金服ATEC城市峰会·上海即将开幕
小蚂蚁说: 2019年1月4日,蚂蚁金服ATEC城市峰会将以“数字金融新原力(The New Force of Digital Finance)”为主题,在中国上海举办.蚂蚁金服ATEC(Ant Te ...
- 蚂蚁金服互联网IT运维体系实践
摘要: 本文来自蚂蚁金服首席技术架构师,基础技术部负责人胡喜.从2010年支撑双十一最高交易峰值2万笔/分钟到2015年双十一的8.59万笔/秒,蚂蚁金服的技术架构和运维体系一直都在不断摸索和实践.本 ...
- 干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的?
干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的? https://www.sohu.com/a/235575064_99940985 干货 | 蚂蚁金服是如何实现 ...
- 报名 | 蚂蚁金服ATEC科技大会 · 上海:数字金融新原力
小蚂蚁说: 2019年1月4日,蚂蚁金服ATEC城市峰会将以“数字金融新原力(The New Force of Digital Finance)”为主题,在中国上海举办.蚂蚁金服ATEC(Ant Te ...
- 备战双 11!蚂蚁金服万级规模 K8s 集群管理系统如何设计?
作者 | 蚂蚁金服技术专家 沧漠 关注『阿里巴巴云原生』公众号,回复关键词"1024",可获取本文 PPT. 前言 Kubernetes 以其超前的设计理念和优秀的技术架构,在容器 ...
- 面经分享!蚂蚁金服三面被拒,重拾起鼓四面猿辅导成功拿下offer!
前言 一直有小伙伴要我分享面经,说自己想面互联网公司,无奈经验太少想多看看其他人是怎么面的.我这两天刚好和一个刚拿到猿辅导offer的朋友吃了个饭,他向我说了说自己的面试经历.粉丝朋友是末流211毕业 ...
- 拿到蚂蚁金服的offer是一种什么体验?3年Java程序员分享面经
前言:我是一名三年的Java程序员,之前一直是在外包公司工作的.在这个月五号的时候,通过我的学长做内推,有了去蚂蚁金服面试的机会.我是在12号接到的电话面试的,因为蚂蚁金服需要7天的简历评估的.还有就 ...
- 【面经】超硬核面经,已拿蚂蚁金服Offer!!
写在前面 很多小伙伴都反馈说,现在的工作不好找呀,也不敢跳槽,在原来的岗位上也是战战兢兢!其实,究其根本原因,还是自己技术不过关,如果你技术真的很硬核,怕啥?想去哪去哪呗!这不,我的一个读者去面试了蚂 ...
随机推荐
- 去年去阿里面试,被问到java 多线程,我是这样手撕面试官的
1.多线程的基本概念 1.1进程与线程 程序:是为完成特定任务,用某种语言编写的一组指令的集合,即一段静态代码,静态对象. 进程:是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程,每个程 ...
- 安装Ubuntu16.04系统后分辨率底的问题
问题描述:安装Ubuntu系统后有可能会遇到分辨率很低的问题,别着急,这是一个小问题. 解决方案:修改/etc/default/grub,打开终端用命令:sudo gedit /etc/default ...
- HarmonyOS Java UI之StackLayout布局示例
StackLayout简介 StackLayout意为堆叠布局,用于在屏幕上保留一个区域来显示组件,实现特殊的功能.通常,堆叠布局中只应该放置一个子组件,如果存在多个子组件,则显示最新的组件.这个布局 ...
- Camtasia Studio,一款好用到爆炸的视频录制软件
目前网络中有很多视频录制软件,各有特色,经过亲测今天小编为大家推荐一款比较好的视频录制软件就是Camtasia Studio软件,Camtasia支持视频的高清录制以及视频的导入导出,而且最支持导出的 ...
- 苹果电脑上folx下载器比迅雷还好用?
对于使用Mac电脑的小伙伴来说,除了迅雷以外,能够使用的下载工具非常少.小编也会经常被朋友问起,是否有好用的Mac下载工具推荐.小编都会毫不犹豫地推荐他们Folx,一款非常适用于Mac的下载工具.今天 ...
- MAC端口被占用的解决方法
html { overflow-x: initial !important } :root { --bg-color: #ffffff; --text-color: #333333; --select ...
- 【ACwing 95】费解的开关——枚举 + 搜索
(题面来自ACwing) 你玩过"拉灯"游戏吗?25盏灯排成一个5x5的方形.每一个灯都有一个开关,游戏者可以改变它的状态.每一步,游戏者可以改变某一个灯的状态.游戏者改变一个灯的 ...
- Linux下使用Docker部署nacos-server(单机模式),丧心病狂的我在半夜给UCloud提交了一份工单
1. 拉取nacos-server镜像 进入 Docker Hub 查看nacos-server最新版本为 nacos-server:1.4.0 配置阿里云镜像加速 sudo mkdir -p /et ...
- Python爬虫入门(二)之Requests库
Python爬虫入门(二)之Requests库 我是照着小白教程做的,所以该篇是更小白教程hhhhhhhh 一.Requests库的简介 Requests 唯一的一个非转基因的 Python HTTP ...
- Tiops评测
一.前言 前几天参加了一个新钛云服公有课,才了解到这家公司有发布自己产品Tiops云运维堡垒机. 在此之前有了解过JumpServer,可以完美支持windows和linux server运维管理,以 ...