网易Java社招研发面经:Java+数据库+Redis+Linux+框架+架构设计

网易Java社招研发面经:Java+数据库+Redis+Linux+框架+架构设计_第1张图片

面试流程

一面二面电话面-->三面四面视频面-->主管电话面-->hr电话面,整个流程下来就两个礼拜。

作者面的是杭研的岗位,本来三面通过后hr联系我说是要去杭州总部让主管进行现场面试,但因为我在深圳所以有安排了一场视频技术面。

面试问题

java基础

  1. 定义Integer x=20 Integer y=200 在内存里是个什么过程?

  2. hashMap与concurrentHashMap原理和区别?hashMap什么情况下会出现循环链?

  3. concurrentHashMap写的时候用什么锁?RenteenLock底层是怎么保证线程安全的?

  4. 描述下JVM内存模型。每个区的作用是什么?堆内存的工作原理,为什么需要两个幸存区?只有一个行不行?老生代是用什么垃圾回收算法?

  5. 描述下多线程原理。怎么开启一个线程?start和run方法有什么区别?

  6. 怎么创建一个线程池,传入的参数分别什么含义?线程池是怎么实现维持核心线程数的?怎么实现一个自定义的拒绝策略?

  7. 反射能获取到父类的私有方法吗?怎么防止反射破坏单例模式

  8. volite关键字的原理?它能保证原子性吗?AtomicInteger底层怎么实现的?

  9. threadLocal关键字有用过吗?如果没有重写initialValue方法就直接get会怎样?

  10. Socket编程 nio(这一块我不太熟就说没了解过,面试官就没细问了)

开源框架

  1. 你用过哪些开源框架?最熟悉的是哪个?(这里我说了spring,所以后边的问题都是围绕spring的)

  2. 描述下spring的ioc和aop。

  3. 你常用哪一种注入方式?BeanFactory和ApplicationContext有什么区别?你们项目里用的哪个?

  4. 说一下spring bean的生命周期。

  5. AOP实现原理是什么?两种动态代理实现原理?JDK动态代理为什么要实现接口?

  6. spring task是怎么实现的?

  7. spring事务你是怎么用的?加了@Transcational注解spring都做了哪些工作?怎么知道事务执行成功了?

  8. 事务隔离级别?mysql默认级别是什么?事务传播属性?spring默认是什么?嵌套事务子事务什么时候commit?

  9. spring和springMVC是什么关系?有没有用过JdbcTemplate?

  10. 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你是怎么配置的?缓存是存在哪里?具体是怎么命中缓存的?

  3. 简历里有写nginx,但问的几个问题我都没答好,面试官就没再多问了emm

Linux

  1. 怎么查看某个进程中的线程?

  2. 怎么批量替换一个文件夹下所有文件中的一个字符?(sed命令)

  3. 有没有用过jps jmap jstack jstat 命令,分别说下有哪些常用参数,知道多少就说多少。

情景模拟&其他

  1. 设计一个系统,系统每天有100亿数据,在后台做实时展示和查找。我当时回答的思路大致是nginx负载均衡,消息队列存储,多线程读取,批量插入,数据库分库分表。

  2. 面试官根据我的回答又衍生出了很多问题,如消息队列存满了怎么办?(也就是消费跟不上生产)批量插入时某一条失败了有什么影响?怎么解决?分库分表应该怎么分?怎么解决数据迁移的问题?

  3. 用代码实现cat 1.log |grep a |sort |uniq -c |sort -rn 的功能。

  4. 如果现在有一台服务器突然变得很慢,怎么去定位问题?

总结

“做程序员,圈子和学习最重要”因为有有了圈子可以让你少走弯路,扩宽人脉,扩展思路,学习他人的一些经验及学习方法!同时在这分享一下是一直以来整理的Java后端进阶笔记文档和学习资料免费分享给大家!

网易Java社招研发面经:Java+数据库+Redis+Linux+框架+架构设计_第2张图片

获取往期以上更多最新面试题资料,可以添加助理 , 免费领取 : 

网易Java社招研发面经:Java+数据库+Redis+Linux+框架+架构设计_第3张图片

你可能感兴趣的:(java,big,data,redis)