个人背景:专科学历,java开发3年,跳槽2次,无大厂经历,京东内推。整体感觉不错的面试经历,最后成功斩获Offer。

一、面试流程

(1)上机题(60分钟100道选择题,单选多选混合的)

(2)技术面(java基础知识)

(3)技术面(简历项目)

(4)架构面(个人发挥)

(5)leader或人力

二、面试凭记忆记录

1、上机题笔试

基本就是蒙吧,涉及到设计模式、js、java、编程规范、代码安全、有一些类似于常识(比如乌云网是干嘛的),涉及面感觉太广了。设计模式会有应用哪些场景、有什么特性这种多选。js基本就是几个程序阅读,变量作用域这种的,是不是var定义,同名变量套了几层调用。这个做完会弹出分数,过了80可以面试了。

2、技术面,好客气的小哥,把没答明白的还给我讲了。问的都是java基础、框架。java基础内容包括源码、jvm、数据结构等。框架是spring、maven,spring涉及一些原理的东西吧。

源码就是hashmap结构、链表和数组。

spring就是主要问了问事务、里边用的一些配置参数是什么含义。

maven是compile、package、install啥区别。

jvm是基本内存结构图,哪些是线程分离、哪部分是共享的。哪块区域主要存储什么对象。

小哥小本上记了好多题,那些jquery的没问我,我说对前端技术不熟,只是简单写写js。然后介绍另一个技术面了。走得时候告诉我可能换工作太频繁了,最近新的规则,5年3份,10年5份工作是人力一个要求,我这不到3年比较危险。

3、技术面,也是客气的小哥。就问问简历里边写了的项目,还问了一个人名,问我是否认识。估计是内推大哥,真心没见过啊。就这样被介绍给了架构师,这部分真心虚。

4、架构师,好严肃的老哥啊。全程基本只是用“嗯”来回答我。只有俩问题,一个是之前系统结构如何,一个是系统调优。

这部分完全不知道答得是不是他想问的。给出的答案是,jvm调优——对于比较大内容,类似文件需要保存到内容情况,可以考虑调整jvm参数,尽早放入老年代,减少full collection中断程序。

然后是数据库调优——建索引、从业务设计上减少联表查询、减少复杂sql防止索引无用等。

三、斩获Offer

还算比较幸运五面后成功斩获Offer。

四、复盘

其实面试过了之后感觉面试前刷面试题真的很重要,我每次有些问题是侥幸刚好在面试题上刷到过。我下面会把我面试之前刷的面试题分享出来给大家,希望对大家有所帮助(篇幅限制只能列出部分)。

JAVA基础

1.面向对象和面向过程的区别

2. Java 语言有哪些特点

3. 关于 JVM JDK 和 JRE 最详细通俗的解答

4. Oracle JDK 和 OpenJDK 的对比

5. Java 和 C++的区别

6. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同

 

Java 后端面试题

1.List 和 Set 的区别

2.HashSet 是如何保证不重复的

3.HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?

4.对象的四种引用

5.Java反射机制

6.Arrays.sort 和 Collections.sort 实现原理 和区别

 

设计模式

1.请列举出在 JDK 中几个常用的设计模式?

2.什么是设计模式?你是否在你的代码里面使用过何设计模式?

3.Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式?

4.在 Java 中,什么叫观察者设计模式(observer design pattern)?

5.使用工厂模式最主要的好处是什么?在哪里使用?

6.举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?

 

乐观锁与悲观锁

何谓悲观锁与乐观锁

两种锁的使用场景

乐观锁的缺点

CAS 与 synchronized 的使用情景

 

Spring全家桶

 

 

 

 

 

由于篇幅限制不能全部面试题内容展示出来(每个方面随便选了几个题),需要的老铁私信【666】就可得到获取方式。

SQL优化

1.一张表,里面有ID自增主键,当 insert了17条记录之后,删除了第15,16,17 条记录,再把Mysql启,再insert 一条记录,这条记录的ID是18还是15?

2.Mysql 的技术特点是什么?

3.Heap 表是什么?

4.Mysql 服务器默认端口是什么?

5.与Oracle 相比,Mysql 有什么优势?

6.如何区分 FLOAT 和 DOUBLE?

 

Mybatis

1.什么是 MyBatis?

2.讲下 MyBatis 的缓存

3.Mybatis 是如何进行分页的?分页插件的原理是什么?

4.简述 Mybatis 的插件运行原理,以及如何编写一个插件?

5.Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?

6.#{}和${}的区别是什么?

 

Dubbo

1.Dubbo 支持哪些协议,每种协议的应用场景,优缺点?

2.Dubbo 超时时间怎样设置?

3.Dubbo 有些哪些注册中心?

4.Dubbo 集群的负载均衡有哪些策略 

5.Dubbo 的核心功能?

6.Dubbo 服务注册与发现的流程?

 

MongoDB

1. 你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什么要使用和不使用NoSQL 数据库?说一说 NoSQL 数据库的几个优点?

2. NoSQL 数据库有哪些类型?

3. MySQL 与 MongoDB 之间最基本的差别是什么?

4. 你怎么比较 MongoDB、CouchDB 及 CouchBase?

5. MongoDB 成为最好 NoSQL 数据库的原因是什么?

6.32 位系统上有什么细微差别?

 

Tomcat

1.Tomcat 的缺省端口是多少,怎么修改?

2.tomcat 有哪几种 Connector 运行模式(优化)?

3.Tomcat 有几种部署方式?

4.tomcat 容器是如何创建 servlet 类实例?用到了什么原理?

5.tomcat 如何优化?

6.内存调优

 

ActiveMQ消息中间件

1.什么是 ActiveMQ?

2. ActiveMQ 服务器宕机怎么办?

3. 丢消息怎么办?

4. 持久化消息为什么非常慢?

5. 消息的不均匀消费是什么?

6.ActiveMQ 中的消息重发时间间隔和重发次数吗?

 

Redis

1.redis 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的memcached 效率要高?

2.redis 主从复制如何实现的?redis 的集群模式如何实现?redis 的 key 是如何寻址的?

3.使用 redis 如何设计分布式锁?说一下实现思路?使用 zk 可以吗?如何实现?这两种有什么区别?

4.知道 redis 的持久化吗?底层如何实现的?有什么优点缺点?

5.redis 过期策略都有哪些?LRU 算法知道吗?写一下 java 代码实现?

6.缓存穿透、缓存击穿、缓存雪崩解决方案?

 

memcached

memcached是怎么工作的?

memcached最大的优势是什么?

memcached和 MySQL 的 query cache 相比,有什么优缺点?

memcached和服务器的local cache(比如 PHP 的 APC、mmap 文件等)相比,有什么优缺点?

memcached的cache机制是怎样的?

memcached如何实现冗余机制?

 

还有一些资料由于篇幅限制不能全部展示出来了,需要的老铁私信【666】就可得到获取方式。