非计算机专业,两年我从小公司到了网易,大厂的感觉真爽!
个人背景
本人毕业于二流一本大学非计算机相关专业,大三下学期开始学 java。目前刚好工作两年,专业后端,base 深圳。
面试流程
一面二面电话面
三面四面视频面
主管电话面
hr 电话面
整个流程下来就两个礼拜,比阿里高效多了。面试的是网易杭州研究院的职位,本来三面通过后 HR 联系我说是要去杭州总部让主管进行个现场面试,而我在深圳,就告诉 hr 我这边不方便看能不能安排视频面试,然后就又加了一轮技术视频面。顺带说一句,网易的 hr 真是超级 nice 啊,加了微信私下聊得很嗨皮~
作为阅读福利,我也把我的复习资料(Java 学习笔记+面试真题)都整理好了,需要的可【点击此处】领取。

重点:面试题
面试题内容包括 Java 基础、开源框架、数据库、redis、网络、Nginx、Linux、情景模拟 &其他
java 基础
1.定义 Integer x=20 Integer y=200 在内存里是个什么过程?2.volite 关键字的原理?它能保证原子性吗?AtomicInteger 底层怎么实现的?3.threadLocal 关键字有用过吗?如果没有重写 initialValue 方法就直接 get 会怎样?4.hashMap 与 concurrentHashMap 原理和区别?hashMap 什么情况下会出现循环链表?concurrentHashMap 写的时候用什么锁?RenteenLock 底层是怎么保证线程安全的?5.反射能获取到父类的私有方法吗?怎么防止反射破坏单例模式?6.描述下 JVM 内存模型。每个区的作用是什么?堆内存的工作原理,为什么需要两个幸存区?只有一个行不行?老生代是用什么垃圾回收算法?7.描述下多线程原理。怎么开启一个线程?start 和 run 方法有什么区别?怎么创建一个线程池,传入的参数分别什么含义?线程池是怎么实现维持核心线程数的?怎么实现一个自定义的拒绝策略?8.Socket 编程 nio(这一块我不太熟就说没了解过,面试官就没细问了)
开源框架
1.你用过哪些开源框架?最熟悉的是哪个?(这里我说了 spring,所以后边的问题都是围绕 spring 的)2.描述下 spring 的 ioc 和 aop。你常用哪一种注入方式?BeanFactory 和 ApplicationContext 有什么区别?你们项目里用的哪个?说一下 spring bean 的生命周期。AOP 实现原理是什么?两种动态代理实现原理?JDK 动态代理为什么要实现接口?3.spring task 是怎么实现的?4.spring 事务你是怎么用的?加了 @Transcational 注解 spring 都做了哪些工作?怎么知道事务执行成功了?事务隔离级别?mysql 默认级别是什么?事务传播属性?spring 默认是什么?嵌套事务子事务什么时候 commit?5.spring 和 springMVC 是什么关系?有没有用过 JdbcTemplate?6.springMVC 中对整个请求的处理流程是怎样的?返回 json 的话是用哪个 view?
数据库
1.mysql 索引是怎么实现的?b+树有哪些特点?真实的数据存在哪里?2.哪些情况下建索引?解释下最左匹配原则?3.现在一个表有三列 a b c,组合索引(a,b,c)查询的时候 where a like ? and b=? and c=?能用到这个组合索引吗?为什么?4.explain 执行计划看过没有?其中 type 字段都有哪些值?分别代表什么?5.你有哪些 sql 调优经验?
Redis
1.redis 有哪几种数据结构?给你一个 key 怎么知道是用的哪种结构?2.怎么查看所有的 key?redis 怎么切换库?怎么清数据?3.描述下 redis 淘汰策略?如果没有数据可以淘汰活着没有配置淘汰策略读请求可以正常执行吗?4.你们项目里 redis 是单节点的吗?如果多节点怎么同步?5.项目里用 redis 存哪些数据?为什么用 redis?和 jetty 本地缓存有什么区别?
网络
1.HTTP 1.1 版本增加了哪些内容?有哪几种请求方式?2.描述下 HTTP 三次握手和四次挥手过程?为什么需要四次挥手?为什么 TIME_WAIT 状态需要经过两个最大报文段生存时间才能到 close 状态?3.浏览器发起一个请求到收到响应中间经历了哪些过程?知道多少就说多少,越详细越好。
Nginx
1.nginx 有哪些模块?你比较熟悉哪个?2.proxy_cache 你是怎么配置的?缓存是存在哪里?具体是怎么命中缓存的?简历里有写 nginx,结果问得几个问题我都没答好,面试官就没再多问了,囧~
Linux
1.怎么查看某个进程中的线程?2.怎么批量替换一个文件夹下所有文件中的一个字符?(sed 命令)3.有没有用过 jps jmap jstack jstat 命令,分别说下有哪些常用参数,知道多少就说多少。我这里结合自己用 jmap jstack 定位到线上问题的经验说的,答完后感觉面试官挺满意的,所以说实践很重要啊~
情景模拟 &其他
1.设计一个系统,每天有 100 亿条数据,需要在后台做实时展示和查找。我当时回答的大体思路是 nginx 负载均衡,消息队列存储,多线程读取,批量插入,数据库分库分表。面试官根据我的回答又衍生出了很多问题,如消息队列存满了怎么办?(也就是消费跟不上生产)批量插入时某一条失败了有什么影响?怎么解决?分库分表应该怎么分?怎么解决数据迁移的问题?2.用代码实现 cat 1.log |grep a |sort |uniq -c |sort -rn 的功能。3.如果现在有一台服务器突然变得很慢,怎么去定位问题?
感悟
1.不要妄自菲薄。
很多人觉得自己学校不好专业不对口,进不了大公司,连去面试的勇气都没有,其实越是大公司越是看重个人能力而不是历史战绩。
2.面试前一定要准备充足,不然就是浪费双方时间。
很多人不屑于临时抱佛脚,你如果觉得这是临时抱佛脚那就是抬杠了。我这里说的准备主要有两点:第一,简历上的内容一定都是自己很熟的东西,面试官会根据他感兴趣的地方衍生出很多问题,可能问到的点都提前想一下。第二,一定要有一两个自己很熟悉的领域,可以具体到某个技术点或者某个框架,但是一定要研究透彻。
3.要善于思考、总结、反思,这些能力是可以训练的。
写在最后
这里只列出了网易面试中问到的问题(其他公司其实问得也都差不多)需要上述面试题及答案文档可【点击此处】即可获得,以下资料也可点击链接领取!
Java 核心知识点

1000 道互联网工程师面试题

大厂面试真题

视频学习资料

评论