2018 5月面试总结-java三年

2018是我工作的第三个年头,因为公司和个人的原因错过了金三和银四,感到些许的遗憾!本以为今年不会跳槽了,但是最近突然心血来潮投投简历,发现现在工作还不算太难找,从开始投简历到拿到offer经历了一个星期的时间,期间拿到了两个offer具体什么公司就不说了!还有几个公司的面试没有去参加!

首先介绍一下我自己的情况 ,java后台开发工程师,将近三年的工作经验,本科非专业出生的程序渣渣一枚,毕业以后一直在一家创业公司工作!所以在技术上面和各位大佬还有点差距,下面我总结一下我最近这一个星期面试所遇到的面试问题,因为我也快有三年工作经验了,所以面试官不会问一下很基础的问题比如String ,StringBuffer,StringBuilder区别之类的问题,一般都是问的都是原理方面的东西!

问题

一、项目

1、说说你最近做的项目

2、你负责那些模块或者说你完成了哪些功能

3、项目使用了那些框架以及技术

4、描述你一个功能的实现细节

5、现在然后实现一个消息列队你你应该注意那些细节

6、服务间调用最长的链路是什么,请说一下

7、怎么理解sass(因为我说们项目是sass模式的)

8、说个你最得意的东西,如果我不知道就更好了。。

这是我被问到的一些项目上的问题,然后面试官会从你的回答中继续的深入问下去,所以大家一定要注意,千万不要给自己挖坑,说自己知道的就行了,切记不要装逼不要吹牛逼,不然被问的卡住了就尴尬了,还会让面试官觉得你这个人不靠谱。

二、java基本功

1、java集合框架,set数据结构等等集合框架的问题

https://www.cnblogs.com/xiaoxi/p/6089984.html

这个问的比较少,只有阿里巴巴的口碑外卖电话面的时候问过

2、HashMap的原理

扩容机制

hash碰撞了怎么办

java1.8 为什么要使用红黑树(hash dos 攻击和性能,跟hash碰撞有关)

3、final,finally,finalize的区别

这个是在问jvm 顺道问到了

java 问的不是太多就问了这几个

三、并发的问题

1、说说JUC

2、知道AQS吗

3、CurrentHashMap原理

问了HashMap之后问的这个

4、synchronized干什么的,原理是什么,以及锁什么优化

5、volatile干什么的?原理是什么?

6、cas?cas有什么缺陷(ABA)如何解决

7、HashTable怎么加锁

8、如果在所线程下保证++i的结果正确,解释一下原理

四、jvm

1、说一下jvm内存模型,以及每个区域的作用

请参考《深入理解jvm虚拟机》

2、垃圾回收的种类

Major GC, Full GC

3、说一下垃圾回收算法

4、垃圾收集器

5、怎么回收?

标记之后会用一个队列放置这些对象,然后以后线程在后台默默的回收(这是面试官告诉我的)

6、现在程序有内存泄漏,怎么查找原因

使用MAT或java自带工具或jprofiler等等

7、类加载的过程

8、volatile在虚拟机的怎么实现

五、数据库

mongo(因为我说我过我使用过,这个一般问的很少)

1、说说MongoDB的好处,使用场景。你理解的MongoDB跟mysql等的不一样的地方

2、mongDB的数据结构

3、mongoDB表设计的原则

4、mongoDB和redis都是非关系性数据库,为什么使用Mongo而不使用redis(从数据库的特性来说)

5、使用过管道吗?原理是什么

6、Mongo建索引的原则,什么列不能建索引

mysql

1、知道三大范式吗

2、说说你知道的数据库优化

3、上个问题肯定会涉及到索引,那么面试官又会问,索引有哪几种

普通索引,唯一索引,主键索引,复合索引,全文索引

4、索引使用原则,应该注意什么

5、索引可以建哪几种,hash和BTree,他们各自的特点

6、聚集索引和非聚集索引

7、怎么做慢查询

8、默认的隔离级别是什么,怎么解释这个。

redis

1、redis是什么io模型

多路复用单线程模型

2、redis的使用场景

3、redis的数据类型

4、redis的过期机制

六、框架

spring

1、spring的注解实现原理

2、springbean 的什么周期

3、spring怎么做全局异常处理

hibernate

1、 说下Hibernate的缓存机制 

这个我被问的少

mybatis

这个我们使用过所以没人问

shiro

1、介绍下shiro

2、shiro怎么使用的

activeMq

1、为什么使用

2、好处

3、设计的时候应该考虑什么

4、怎么保证消息的幂等

等等使用过的框架,面试官也会问的比较深,都到原理了。

七、分布式

1、怎么理解微服务

2、怎么理解分布式

3、分布式事务怎么做

4、介绍一下你知道的选举算法

我只知道paxos而且还讲不清楚

5、介绍下你们系统的架构

6、怎么保证系统的高可用

7、使用什么框架搭建的

8、为什么使用springCloud而不是用dubbo和zookeeper

9、springcloud使用了哪些组件,叙述一下其中一个的原理

我讲的是feign

10、负载均衡怎么做的

八、web

1、http get和post区别

      2、cookie被劫持怎么办

      3、前端发起请求到后台的整个流程

            

总结

因为只面试了五家公司所以遇到的问题可能不太全面,但是也能反映三年的java后台开发需要什么,不管是在java基础、开源框架还是在数据库方面都需要了解原理,而不是只是停留在使用的阶段,如果能够读过一些源码就更好了!最后说一句,面试的时候千万不要装逼不知道就说不知道,谦虚一点,一般面试你的人都会比你牛逼!

猜你喜欢

转载自blog.csdn.net/Dreamhai/article/details/81190641