一口气面试6家大厂,已拿5家offer,

北京手足癣专治医院 http://m.39.net/pf/a_8930322.html

四月份的时候因为换工作的缘故,陆续参加了华为、蚂蚁、字节跳动、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直聘找到pddHR。

2.一面:视频面试。前半小时聊项目,后半小时做题。

3.二面:视频面试。前半小时聊项目,后半小时做题。

4.三面:视频面试。前半小时做题,后半小时聊项目。

5.HR面试:确定薪资,因为PDD的强度非常大,大家可以大胆一点要薪资,不然进去以后后悔就晚了。

总结:PDD的面试流程非常简单粗暴,就是做题加上聊项目,一半一半,题目难度基本是Leetcode上的Medium难度,我面试下来也没有碰到很偏很怪的题目,面试准备的时候,把Leetcode上面常考的题刷一刷就没问题了。虽然最后没有去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等等,有时间的话多去刷刷题找感觉。

面试题分享

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

1.Java基础

1.1Hashmap与concurrentHashMap(重点)1.2集合相关问题1.3Java泛型的理解1.4跳表(ConcurrentSkipListMap)的查询过程是怎么样的,查询和插入的时间复杂度?1.5java字节流字符流1.8包装类型和基本类型比较问题1.9为什么重写equals和hashcode1.10stringBuilder和stringBuffer的区别1.11Java序列化的原理1.11Java8、9、10、11的一些新特性介绍1.12java中四种修饰符的限制范围。1.13Object类中的方法。1.14浅拷贝深拷贝1.15接口和抽象类的区别,注意JDK8的接口可以有实现。1.16动态代理的两种方式,以及区别。1.16传值和传引用的区别,Java是怎么样的,有没有传值引用。1.17一个ArrayList在循环过程中删除,会不会出问题,为什么。1.18Exception和Error区别1.19new关键字和newinstance()方法1.20Map、List、Set分别说下你知道的线程安全类和线程不安全的类1.21Java防止SQL注入1.22反射原理及使用场景1.23staticVsFinal?如何让类不能被继承1.24内存泄露?内存溢出?1.25重写Vs重载1.26Lambda表达式实现1.27ClassNotFoundException和NoClassDefFoundError的区别

2.并发、多线程

2.1volatile关键字原理2.2对java中锁的理解2.3悲观锁乐观说2.4对CAS的理解,java中的CAS,如何不用unsafe实现CAS2.5java线程创建方式线程run和start的区别?两次start同一个线程会怎么样?2.6Java线程池的原理?线程池有哪些?线程池参数是什么?2.7ThreadLocal及其应用场景2.8对线程安全的理解2.9get需要加锁么,为什么?2.10Lock的底层原理。synchronized、Lock、ReentrantLock、ReadWriteLock。2.11AtomicInteger怎么实现原子修改的?2.11分布式环境下,怎么保证线程安全。2.12产生死锁的四个必要条件?2.13如何中断线程2.14线程的状态都有哪些。2.15wait、notify、notifyAll、await、signal、sleep、yield2.16Callable和Future的了解。2.17synchronized关键字的用法,优缺点。2.18可重入锁的用处及实现原理,写时复制的过程,读写锁,分段锁2.19ABC三个线程如何保证顺序执行。2.20双线程交替打印奇偶(阿里)

3.JVM

3.1常见GC算法、CMS收集器、G13.2jvm内存模型Java内存模型3.3怎么判断对象可被回收?GC可达性分析中哪些算是GCROOT?3.4edensurvivor区的比例,为什么是这个比例,edensurvivor的工作过程。3.4fullgc是否可以回收方法区3.5什么对象会进老年代?为什么新生代使用复制算法?3.6被GC判断为"垃圾"的对象一定会回收吗3.7强制younggc会有什么问题?3.8类加载的过程Java为什么要设计双亲委派模型?3.9什么时候会触发minorgc,什么时候会触发fullgc?3.10G1和ZGC的区别3.12你知道强引用、弱引用和软引用吗?GC对他们执行怎样的操作。3.13JVM方法栈的工作过程,方法栈和本地方法栈有什么区别。3.14JVM的栈中引用如何和堆中的对象产生关联。3.15逃逸分析技术。3.16Java是否可以GC直接内存。3.17常用的JVM调优参数。3.6具体的性能调优步骤吗?fullgc的时候会导致接口的响应速度特别慢,该如何排查和解决。3.18dump文件的分析。3.19Java有没有主动触发GC的方式3.20假如现在在同一台机器上开两个java项目,有几个java虚拟机?3.21javac编译器工作流程

4.Spring

4.1springIOC过程4.2循环依赖怎么解决的4.3springAOP,动态代理是怎么实现的4.4springBeanDefinition作用4.5spring

Autowired(

Resource,类似)实现原理4.6bean的生命周期4.7Bean的默认作用范围是什么?其他的作用范围?4.8Spring的单例是怎么实现的?4.11SpringMVC不同用户登录的信息怎么保证线程安全的?4.12Spring用了哪些设计模式。4.13Spring注入bean的方式。4.14什么是IOC,什么是依赖注入。4.15Spring具有什么特点(IOC和AOP)4.16几种scope区别,aop实现有哪几种实现,4.17spring的事务及实现模式4.19对Spring、SpringMVC、springBoot理解4.20

transactional注解在什么情况下会失效,为什么。4.21SpringMVC的Controller是如何将参数和前端传来的数据一一对应的。4.23Spring如何维护它拥有的bean。4.24自定义注解的实现。4.25如何自己设计IOC框架4.26Quartz是如何完成定时任务的。4.18servlet的生命周期,怎么判断是get请求还是post请求,后台实现session共享的方法。Javaweb过滤器的生命周期?过滤器和拦截器的区别。4.19BeanFactory和FactoryBean的区别4.20Spring中配置id或name相同的Bean可能引发的问题及解决方案4.21防止Web表单重复提交的方法

5.消息中间件

5.1kafka有哪些组件,kafkacontroller选举过程,kafkaleader重选举过程5.2kafka最早是为了解决什么问题设计的5.3为什么kafka用zookeeper来存储metadata,而不是用db来存储5.4kafka只有一次生产只有一次消费怎么做5.5kafka的消费模式?kafka怎么做有序消费?kafka重消费解决?消息丢失怎么解决?5.6Kafka的Replicas的作用?

6.算法

6.1B+树6.2hash和B+树的区别?分别应用于什么场景?哪个比较好?6.3红黑树了解么,时间复杂度?五个特性6.4堆排序的时间复杂度6.5快速排序,堆排序,插入排序6.6一致性Hash算法,一致性Hash算法的应用

限于篇幅,我没有给出答案,感兴趣的可以私领取!!!

如果觉得本文对你有帮助,记得点赞+转发!!感谢!!




转载请注明:http://www.aierlanlan.com/grrz/3389.html