非科班的Java菜鸡成功逆袭:备战8个月,我拿到了阿里、网易offer

个人背景介绍:

本人今年25,大学是某211学校,本科毕业生,专业是市场营销专业,因为毕业后工作不顺,又不擅长销售岗的工作,所以决心转行。大学期间,就一直对计算机方面的工作比较感兴趣,有了解过程序员这个行业,也知道这个行业的艰辛,但因为兴趣很大,所以有自学过一些基础,不过在我有辞职转行的想法时,就知道自己的能力和资质肯定是不够的,又想要进入一些前景和影响力比较好的互联网大厂工作,因此我又得开始回到“学习”岗位上,大概在18年年底就辞去了工作,报了一家线上教育机构,课程为8个月,这8个月里,我学得非常扎实,大概到了7月的时候,课程结束了,于是开始准备BAT的面试,刷了很多面题,做好了准备,我终于在8月下旬奔赴上了“战场”。现在,已经成功拿到了阿里和网易的Java岗offer,今天主要分享一下阿里和网易的面经,想要知道我的学习路线可以私信给我。

阿里巴巴:菜鸟网络(Java研发)

一面(40分钟左右,简历面)

1.大学不是学的这个,为什么突然想换行业?自己怎么学习程序这一方面的知识?

  1. 介绍一个你最熟悉的项目;

(1) 项目中使用的什么框架;

(2) 解释一下这个框架;

(3) 这个项目中遇到的最大的困难,怎么解决的;

  1. 数据库索引有哪些;

(1) 他们有什么区别;

(2) 索引采用的是什么数据结构;

(3) B树和B+树的区别;

  1. 有没有对数据库做过优化,列举一下;

  2. Hashmap与hashtable之间的区别;

(1) 谈一下对线程安全的理解;

(2) Synchronized的锁优化机制;

(3) 乐观锁解释一下;

  1. Jvm的各个内存区域解释一下;

  2. 垃圾回收机制解释一下;

  3. 有哪些垃圾回收刷算法,他们有什么区别;

  4. 算法中,快排和归并解释一下;

(1) 他们的算法复杂度分别是多少;

  1. 了解哪些开源框架?

(1) 怎么学习他们的?

(2) 看过哪些源码

  1. 最近有在看什么数,平时的学习方法;

  2. 你对java各个版本了解很清楚是专门有去了解过吗?

  3. 我问完了,你有什么想问的?

二面(45分钟左右)

  1. 自我介绍

  2. 说一下你的竞争力在哪

  3. 说一下你觉得技术含量最高的一个项目或者实习:

a) 打断一下,mvcc的解释一下;

b) 怎么实现的;

c) 你知道哪些数据库引擎,说一下区别;

d) 继续刚才你说的;

Balabala…

a) 打断一下,索引是怎么知道哪些索引需要优化的;

b) 有没有更好的方法;

c) Mysql日志有去看过吗;——没

d) 继续你刚才说的;

Balabala…

a) 打断一下,你说的数据库切换是动态的吗;

b) 那现在给你一个需求将你项目中的数据库切换改成动态的切换(不需要重启服务);——不会

c) 继续你刚才说的;

Balabala…

  1. 打断一下,你说一下线程安全问题好了(估计是觉得我项目太low了);

a) 为什么要注意线程安全;

b) 打断一下,我说得是底层原理方面,也就是JMM那;

c) JMM8个原子操作说一下;

  1. 知道哪些锁优化机制

a) 除了锁升级还有吗?

  1. 知道分布式中间件吗

a) Redis的AOF和RDB解释一下;

  1. 我问完了,你有什么想问的么?

Q:其实我基础比较好,很多面试官您都没问到。。

A:哦,我的问题已经问完了。

Q:呃、、听说25号就结束所有流程是吗?

A:是的。

Q:请问菜鸟网络对于应届生的要求,是更偏向基础还是更偏向应用?

A:emmm.基础!

三面(一个小时左右,电话面,主管面试的)

  1. 自我介绍

  2. 项目介绍(问了蛮久)

  3. Java垃圾回收解释下——(问的这么宽,那我就随意发挥了)

  4. 打断下,你看过源码是吧?那就问下一个

  5. Java内存区域解释下

  6. 有哪些常量池

  7. 方法区在不同版本有哪些实现

  8. 类加载过程简单说一下

  9. 类能否多次加载

——这里说明下,可以使用热加载实现多次加载

  1. 类加载器有哪几种

  2. 双亲委派模型解释下

  3. 能不能破坏,怎么破坏

  4. findClass 和 loadClass 有何区别

  5. 线程安全解释一下

  6. Java有哪些方法解决这个问题

  7. Volatile解释一下

  8. Jmm解释一下

  9. 你对juc包很熟悉是吧,里面有哪些东西大概说一下

  10. 同步器主要有哪些,分别解释下

  11. CountDownLatch 和 CyclicBarrier 的区别,举个例子说一下

  12. Semaphore你也看过源码是吧,那你解释下它的底层原理

  13. 集合类你常用哪些,说一下ArrayList底层

  14. 它和Map是同族么,那HashMap的底层原理解释一下

  15. 那你知道它和HashTable的区别么

  16. 工程上常用另外一种类来取代HashTable你知道么

  17. 说一下concurrentHashMap底层

  18. 可能存在什么问题,哦,你还知道1.8版本的,那你解释一下它用的CAS机制

  19. 它可能导致ABA问题,你知道什么是aba么,有什么解决方法

  20. 他还可能导致别的什么问题么

  21. 线程池用过么,说一下各个参数的含义

  22. 线程池的原理

  23. java线程的各个状态

——这里强调一下java线程的状态有6种和操作系统的5大状态不一样,大家不要被网上无脑转载的博客给毒害了。

  1. 那操作系统的进程和线程有什么区别,通信方式各有哪些

  2. Spring-AOP解释一下,bean生命周期呢,这你也都看过源码是吧,那就问数据库吧

  3. MySQL几个引擎区别

  4. 事务隔离哪些

  5. Mvcc介绍

  6. 嗯,今天就到这里吧,你的话应该没什么问题了,你能提前来实习么?

  7. 有什么想问的么?

get主管的口头offer,很开心,但是面主管之前接到一个电话说西安有有现场面也得去参加下,但是依然有点担心现场面发挥不好把口头offer泡汤了。(从这一面可以看出懂源码的重要性)

四面(现场面,同样是问技术类的问题)

很多问题忘记了,写一下还记得的几个

  1. 自我介绍

  2. 实习、项目介绍(+细问)

  3. 正常挖基础,挖了蛮久

  4. 手写快排

  5. 手写一个死锁程序

  6. 一个链表,已经排序如何快速定位到中位数

  7. 一篇文章获取出现次数最多的字母

  8. 如果是单词呢

  9. 如果是一本书呢

  10. 如果是要在上亿个号码中找出出现最多的呢,说出你的思路,把你能想到的方法都说出来

  11. 秒杀系统怎么设计

  12. 最近在看什么技术书(面阿里当然说阿里出的那几本书,其实是真的在看,很不错:李智慧老师的《大型网站技术架构》、许令波老师的《深入分析Java Web技术内幕》)

  13. 说一个你可能不太舒服的问题,这个问题不算面试内,看得出你很聪明也很努力,但是你也要知道相对于这些东西,那些计算机出生的研究生们可能比你基础要更加扎实一些,比如计算机内部的原理什么的,你有考虑过这个问题么?

  14. 你有什么想问我的么?

HR面(40分钟左右)

也忘了很多了,主要是日常聊天,小姐姐全程微笑,聊得很愉快,聊得很多。

  1. 自我介绍

  2. 实习、项目介绍(主要了解开发规模)

  3. 比赛介绍(因为是队长,所以问了下任务分配)

  4. 日常聊天

  5. 你了解菜鸟网络么——(甚至把我报的云仓部门都说了个清楚)

  6. 哇,你是有亲戚朋友在这个部门么

没哈,因为热爱,所以了解

  1. 那你知道阿里的一些不好的传闻么,你有什么看法,比如关于我们hr的你知道么

——2015年的“拥抱变化”

  1. 看不出你对阿里的价值观还了解这么多,平时有关注阿里的技术发展么

  2. 平时有自己的一套学习方法么

  3. 自己觉得自己是怎么样一个人

  4. 周围人,同门,队友怎么评价你的

  5. 家里哪些人

  6. 和父母关系怎么样

  7. 知道父母生日么

  8. 父母知道你想来阿里么,父母怎么评价阿里的

  9. 有女朋友么

  10. 怎么分手的方面说么

  11. 去过杭州么,评价一下杭州

  12. 目前手上有哪些offer

  13. 有什么想问我的

网易:网易考拉(Java研发)

一面(一个小时左右,时间真的很长,问得我心理防线差点崩塌)

  1. 先自我介绍吧(着重讲了一下自己为什么大学专业不对口,之后怎么学习的等等)

  2. 最熟悉的项目介绍一下(会挑某个问题细挖)

  3. 看你对jvm很熟悉是吧,介绍下java内存区域分配吧

  4. 那JMM知道吗,介绍下

  5. 垃圾回收的算法有哪些

  6. 为什么要分代收集

  7. Minor GC过程解释一下

  8. 你刚刚说你对juc包比较熟悉,有用过线程池吗?怎么用的

  9. 说一下线程池有哪些参数

  10. 线程池的底层原理

  11. 死锁的原因,写一个简单的会发生死锁程序

  12. 对开源框架熟悉哪个?

  13. 看过源码是吧,那从源码层面解释下AOP

  14. 数据库平时用的哪个

  15. MySQL引擎介绍一下

  16. Inodb的索引数据结构?画一个简单的看看,说一下和b树的区别

  17. 使用索引要注意哪些问题你知道么

  18. 你说到最做前缀,那我考考你,对ABC三列建立索引,把能用到索引的条件都列出来。

这里我确定是“最左不能丢,中间不能断”,但是面试官一口咬定AC也能用,我心里想能是能用但是只能用A的,不能使用AC,但是没办法,僵持了一下后只能顺着大佬说。

  1. MySQL怎么实现分布式锁的

  2. 选课系统需要那些表,你简单写一下

  3. 加入课程的得分那又怎么设计

  4. 现在再写一个sql,找出某一个课程中得分最高的学生名字

  5. 面对大数据数据库层有哪些方法

  6. 你自己试过分库分表么

  7. 现在一个业务需求:考拉要发行一个优惠券,但是发行量很大,需要分库,每张券都有自己的id和对应客户id,现在让你来设计,要怎么分库

  8. http访问流程说一下

  9. tcp三握四挥

  10. 算法方面,排序你知道哪些

  11. 把归并排序写一下

  12. 好了,不错,去大厅休息下等下hr会通知你

二面(问得很深,比第一面难,还好自己没有泄气)

  1. 自我介绍

  2. 熟悉jvm是吧,有没有自己调优经历

  3. 会用哪些jvm kit

  4. 如果一个linux在线项目经常发现full gc ,你会怎么样快速定位?——会一点

  5. Jvm垃圾回收器有哪些

  6. 各有什么区别

  7. 他们怎么搭配的

  8. G1的工作原理解释一下

  9. 它的gc root 有什么不同的地方

  10. 每个region是怎么知道自己是什么代的

  11. 年轻代的存活对象是怎么移动到老年代的

  12. 不是问晋升条件和内存担保,就问你怎么移过去的——不会

  13. 那CMS熟悉么,说一下为什么他采用标记清除还是1.9之前的主流回收器,是用了什么优化机制?——不会

  14. 看你数据库也挺熟(看到上个面试官提过的问题),你解释一下mySql几个引擎的区别

  15. 事务隔离级别有哪些,其中可重复读是怎么实现的

  16. Mvcc的底层原理又是什么

  17. 知道Redis么,介绍下一般用它做什么

  18. 他常用的数据结构以及他们的区别

  19. 远程过程调用框架知道哪些

  20. 说一下调用过程

  21. 说一下dubbo原理——不会

  22. http熟悉是吧,https的优化

  23. http头中的cached属性解释一下

  24. 去大厅等一下吧,hr等会儿会通知你

三面+hr面

主管:(技术面)

  1. 自我介绍

  2. 依次简单介绍下你的实习和项目(中间偶尔有细问)

  3. 介绍下你的比赛

  4. 如果一个linux在线项目经常发现full gc ,你会怎么样快速定位?

(妈耶,这不是上一轮刚问过么。。。我打算回去再查来着,吐血。。)——把知道的说了

  1. 系统负载过高怎么定位

  2. 这个问题进程不是java的又怎么办

  3. 看你项目都是单节点的,会分布式的么——不太会

  4. 最近在学什么技术

  5. 有什么想问我的么

Hr:

  1. 了解考拉么——(每个公司面试前我都有做足功课)

  2. 这么了解呢,那你也知道对于一个上升期间的部门,加班是无法避免的,你对995怎么看?——我!喜!欢!

  3. 你老家哪里的,家里哪些人

  4. 家里人知道你要来杭州么

  5. 第一次来杭州么,喜欢杭州么

  6. 平时怎么学习的

  7. 对工作氛围有什么要求么

  8. 你有什么要问我的么

总结

拿到阿里和网易两家offer,幸运的是,网易考拉被阿里收购,所以严格意义上来说网易考拉是属于阿里的,所以去哪一家都无所谓,最终的选择还是去了菜鸟,希望未来能一起进步,互不辜负。

另外想说的是,一个好的结果 = (前期的努力 + 面试和笔试的发挥)*运气, 既然运气不能自控,那就好好把握自己能控制的,越努力越幸运是有道理的。

发布了47 篇原创文章 · 获赞 21 · 访问量 8926
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览