面试经历-2019-12-06

大学毕业一年半,有两年半没有面试了(实际项目经验两年半),自从收到面试邀请,激动又害怕了两天半,面试完成之后一点点平复。现在来回顾一下面试中问到的相关技术点吧!(面试中也很紧张回忆不全了,能想到多少就写多少,编号不代表提问顺序哈!)

首先做了一套面试题,大概花了40分钟自我感觉能得85分左右。题目比较简单选择、简答题、编程题、思考题。

================ 自我介绍,开始面试 ================

1、加锁的方式有哪几种?

synchronized关键字、Lock技术、基于Zookeeper的分布式锁

2、Redis的基本数据类型有哪些?

string(字符串)、hash(对象存储)、list(有序列表)、set(无序集合)、zset(权重有序集合)五种

3、Redis除了能做缓存,还能做什么?

其实,可以做分布式锁,红包领取的记录、排行榜,计数器,生成流水号等

4、Redis的淘汰机制?

volatile-lru:从已设置过期的数据集中挑选最近最少使用的淘汰

volatile-ttr:从已设置过期的数据集中挑选将要过期的数据淘汰

volatile-random:从已设置过期的数据集中任意挑选数据淘汰

allkeys-lru:从数据集中挑选最近最少使用的数据淘汰

allkeys-random:从数据集中任意挑选数据淘汰

noenviction:禁止淘汰数据

redis淘汰数据时还会同步到aof中、从机

我们可以设置maxmemory ,当数据达到限定大小后,会选择配置的策略淘汰数据

5、你会选择哪个版本控制工具,如何使用,会制定哪些使用规则?

GIT

分布式设计,无需联网也可使用,一个新版本制定出啦立即拉出分支,每位开发人员一套代码,开发好合并到主分支,上线。

提交时必须写明代码作用,不能含糊其辞,例如修改问题。

6、你会如何处理高并发场景,例如商城秒杀?

答:高并发产场景最薄弱的就是数据库,可以使用缓存技术,Redis + MongoDB

(当时思路闭塞了,还可以将同步转异步实现不过体验较差、使用MQ技术等)

7、你的项目做过压力测试吗,说一下你知道的压测软件?

据我经历的,还真没做过,压测软件当时死活想不出,现在想起来了LoadRunner,哎!

8、说一下SpringBoot框架与传统SSM框架的不同点?

SpringBoot以配置为中心,并对所有集成做了默认设置。

SSM要有spring-dao.xml + mybatis-config.xml + jdbc.properties来集成MyBatis

spring-mvc.cml做视图解析器、拦截器等

web.xml配置DisPatchServlet和过滤器等

9、如果两个系统要交互,但两系统编码格式不同,如何处理?

答:一般都用json格式传输,可以设置传输信息的编码格式,例如使用UTF-8。

面试官反问如果对方语言环境是GBK呢?

面试官解答:可以将信息转成Base64文件流进行传输,对方直接解密Base64。(大概是这个意思。。。)

10、知道OSI七层模型吗,TCP连接是在哪一层起作用?

答:物数网传会表应,应该是传输层吧,我不太确定。(后来查了一下,果然是传输层,哼哼)

11、

接近尾声时,我反问到,还没有问我容器的问题,面试官无奈的又问了我一个

12、HashMap的扩容时机,扩容机制是什么?

答:HashMap默认长度是16,负载因子默认0.75,也就是当HashMap放入第13个元素的时候,就会出发扩容,向左做一位位运算。

还有一些问题是当前项目中你涉猎的各个模块、一些模块重构的思路,线上问题优化的方案等。

面试时长大概半个小时左右,其实我觉得还有好多问题没有提问,面试就结束了,想到这里,心中哇凉哇凉的。。。

例如:

MySql存储引擎,建表规范,事务级别,sql优化,读写分离思想等。

Spring的理解,IOC、AOP、MVC(这个在面试题里有回答)、ORM等模块的功能及实现,竟然一点没问。。。

MyBatis框架底层原理。

Nginx反向代理、负载均衡、location匹配规则等。

设计模式也没问诶,还有JVM调优、GC、zookeeper特性等。

后来人事私聊我说,今天他们特别忙,有代码上线,跟候选人解释一下,并告诉我初试通过了,qaq

准备复试,加油!!!

你可能感兴趣的:(Java,面试)