本想试试看,结果却拿到了京东的Offer , 十一月的意外惊喜

image

最近,秋招已经基本接近尾声了,我找了几位拿到名企Offer的粉丝,请他们总结了面试经验,近期会分批的推送给大家。希望给那些正在准备面试的同学提供些帮助。

今天给大家分享的面经作者通过了2020年的秋招,通过了京东的几轮技术面试。以下是他总结的面试经验及准备思路。希望对你有帮助。

从10月开始正式准备,在秋招抱着试一试的念头,投了京东Java研发工程师实习,然后意外过了笔试一面和二面,稍微总结下自己面试的经验和准备,希望能给大家一点帮助

面试前我给自己列了一个List,虽然到目前为止还没把自己的List全部走一遍,但觉收获还是蛮大的,如果和我一样自制力不是很强的同学,也可以和我一样制定一个List。

学习计划

日常任务

1. 设计模式 * 1(我是看的《大话设计模式》,读起来通俗易懂,实现是C#的,除了委托那块其他差别其实不是很大,如果有余力的同学也可以结合《重构·改善既有代码的设计》学习)

2. Effiective Java * 2 (还有一本Practical Java感觉有点旧,我是挑着看的,Effiective Java也出了第三本,加了很多新的地方,英语好的同学建议阅读原版,只不过我水平比较差看的中文版)

3. 集合类源码*1 (最好是找一段时间系统的学习一边源码联系起来看,看起来比较吃力的同学可以上网参考一些博客帮助理解,不一定要求细节面面俱到但是一些关键点要理解,我当时是之前系统的学了一遍,然后每天就是复习一下,防止遗忘)

4. 算法题 * 1 (Leetcode也推出了中文版,或者牛客网也可以,我算法比较薄弱,就挑了一下经典的题目刷了下)

5. 基础知识题若干(当时是在过年期间把牛客网全部Java题过了一边,后面主要是做复习错题,和一些数据库以及网络的选择题)

每周任务

最好根据每个人自己的时间来安排,当前也最好去上周review一下自己上一周的复习的,然后每周最好都有个主题而不是漫无目的的复习,我是有记录一些笔记的习惯,推荐使用MarkDown,或者直接用印象笔记有道云笔记之类的工具也行

复习要点

自己总结的其实还是Java基础,JVM,网络,数据库,数据结构,还有Java的源码要熟练

如果不是很清楚准备的同学可以多找几份面经,看看别人的问题,带入面试场景,可以列出一份自己的弱点清单,然后针对薄弱做复习

一面是在前一天晚上六点收到短信,让我第二天十点到上海参加面试,真的没想到自己能过了笔试,想着自己也没参加过面试,就来面试下当做积累经验了。

一面

我:第一次面试有点紧张

面试官:没什么我们就随便聊聊,你先自我介绍一下吧

然后是一串自我介绍(自我介绍真的是必考题,建议每个同学都在自己心里有一份自我介绍,我是在自我介绍的同时穿插了自己大学期间做的几个项目还有自己学习了哪些东西)

Q:你简历上说自己Java基础较为扎实,那我们先聊一些Java的基础问题

Q:StringBuffer和StringBuilder有什么区别,底层实现上呢

A:StringBuffer线程安全,StringBuilder线程不安全,底层实现上的话,StringBuffer其实就是比StringBuilder多了Synchronized修饰符

Q:知道哪些Map

A:线程不安全HashMap,线程安全ConcurrentHashMap,有序TreeMap,实现ThreadLoacl用的WeakHashMap

Q:HashMap为什么线程不安全

A:先说1.8之前HashMap采用的是拉链法解决冲突,画图解释了链表成环的原因,在1.8的时候采用了红黑树做处理,感觉出现冲突的概率没那么高了(不知道对不对

Q:ConcurrentHashMap 为什么线程安全

A:讲了红黑树和CAS,又顺便提下ABA问题,以及Java的解决方案

Q:你简历提到有参加过蓝桥杯比赛,那写下快排算法,简单的说下思想

A:手撕快排

Q:你说使用GIt/SVN完成项目管理那你们平时在项目中是如何使用Git,Git和SVN两者有什么区别呢

A:说了区别,然后说我们用的Git其实用的不是很好,主要是新建分支做备份,以及Feture,需要的时候合并到master里面

Q:对JVM有了解吗?简单的介绍下

A:讲了内存模型,垃圾回收算法,以及垃圾回收器, G1和CMS感觉是比较重要的

Q:用过锁吗,JUC包有什么了解

A: 讲了JVM对锁的优化,还有JUC包下面的几个锁,和Synchronized的不同

Q:你项目中用到了SpringMVC,你可以大概讲下你对SpringMVC的理解

A:讲了IOC和DI,AOP那块说了JDK和CGLib动态代理,两种代理实现起来的不同点,接着提及项目中用到的一些Spring Data 和 Spring Security 之类的东西

Q:你们主要用的是Mysql还是SQL Server

A:Mysql,然后采用的是什么数据库引擎,讲了Mysql两种引擎的区别,自己提了索引和底层数据结构

Q:你们用的MyBatis还是Hibernate

A: Hibernate,但我自己了解过MyBatis,自己也建议过项目改成MyBatis

Q:你为什么要建议使用MyBatis呢,他和Hibernate有什么区别呢

A:主要可能还是出于自己喜欢学习,而且听说很多互联网公司都是用MyBatis,Hibernate更加笨重一点,写的hql,但是如果数据库移植的话,是比较简单的,MyBatis写的是原生的sql语句,可能对于京东这样体量大的公司能更好的满足自己的业务需求,毕竟sql还是比hql更加灵活的

接着就是一连串围绕项目的问题,应该每个人都不同,期间穿插着多线程的问题

提醒同学们,自己的项目可以少,两个就够了,但一点要熟悉项目的流程开发过程,拿出来的项目要有东西可以讲,最好不要把大学期间做的大作业拿来充数。

Q:项目遇到的难题,有没有JVM调优的经验

A;讲了自己遇到的一次内存泄漏的问题,如何用JPS Htop 等指令,导出线程堆栈做问题排查,最后定位问题

Q:你对京东有什么了解

A:(当时这个问题感觉自己答的不是很好,建议面试的同学都在面试前找找这个公司技术团队有没有出过什么书或者什么技术博客,对技术选型大概有个了解)

一面结束,面试官说我基础挺扎实的,可能周末还要我来一趟,然后我就回学校等二面通知了

二面

二面其实没什么好说的,感觉比一面简单,主要都是围绕我简历的项目,和团队协作来说的,最后提及了自己最近在学习什么,提了自己对于ZooKeeper,Kafka这块比较感兴趣,正在努力的学习中,然后设计了一个高并发场景,让我思考如何处理

二面结束,面试官说尽量下午发短信,结果提心吊胆等了三四天今天才收到预约HR电面的短信,希望自己HR面能顺利,也希望同学能早日拿到自己想要的offer。

还是在学习中的菜鸡一只,如果有不正确的地方希望指出!

总结:

所有的面试题目都不是一成不变的,上面的面试真题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。

最后给大家分享:

面试真题+我的学习笔记(附Java核心知识点)+各知识点学习路线思维脑图

image

这些书籍都是非常不错的,

值得大家研读,

不知道怎么去学习,

也可结合思维导图找到学习的方向。

image

资料获取方式:关注公众号:“程序员白楠楠”获取上述资料

重要的事情说三遍,转发+转发+转发,一定要记得转发哦!!!

image