大学毕业一年半,有两年半没有面试了(实际项目经验两年半),自从收到面试邀请,激动又害怕了两天半,面试完成之后一点点平复。现在来回顾一下面试中问到的相关技术点吧!(面试中也很紧张回忆不全了,能想到多少就写多少,编号不代表提问顺序哈!)
首先做了一套面试题,大概花了40分钟自我感觉能得85分左右。题目比较简单选择、简答题、编程题、思考题。
synchronized关键字、Lock技术、基于Zookeeper的分布式锁
string(字符串)、hash(对象存储)、list(有序列表)、set(无序集合)、zset(权重有序集合)五种
其实,可以做分布式锁,红包领取的记录、排行榜,计数器,生成流水号等
volatile-lru:从已设置过期的数据集中挑选最近最少使用的淘汰
volatile-ttr:从已设置过期的数据集中挑选将要过期的数据淘汰
volatile-random:从已设置过期的数据集中任意挑选数据淘汰
allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
allkeys-random:从数据集中任意挑选数据淘汰
noenviction:禁止淘汰数据
redis淘汰数据时还会同步到aof中、从机
我们可以设置maxmemory
GIT
分布式设计,无需联网也可使用,一个新版本制定出啦立即拉出分支,每位开发人员一套代码,开发好合并到主分支,上线。
提交时必须写明代码作用,不能含糊其辞,例如修改问题。
答:高并发产场景最薄弱的就是数据库,可以使用缓存技术,Redis + MongoDB
(当时思路闭塞了,还可以将同步转异步实现不过体验较差、使用MQ技术等)
据我经历的,还真没做过,压测软件当时死活想不出,现在想起来了LoadRunner,哎!
SpringBoot以配置为中心,并对所有集成做了默认设置。
SSM要有spring-dao.xml + mybatis-config.xml + jdbc.properties来集成MyBatis
spring-mvc.cml做视图解析器、拦截器等
web.xml配置DisPatchServlet和过滤器等
答:一般都用json格式传输,可以设置传输信息的编码格式,例如使用UTF-8。
面试官反问如果对方语言环境是GBK呢?
面试官解答:可以将信息转成Base64文件流进行传输,对方直接解密Base64。(大概是这个意思。。。)
答:物数网传会表应,应该是传输层吧,我不太确定。(后来查了一下,果然是传输层,哼哼)
接近尾声时,我反问到,还没有问我容器的问题,面试官无奈的又问了我一个
答:HashMap默认长度是16,负载因子默认0.75,也就是当HashMap放入第13个元素的时候,就会出发扩容,向左做一位位运算。
还有一些问题是当前项目中你涉猎的各个模块、一些模块重构的思路,线上问题优化的方案等。
面试时长大概半个小时左右,其实我觉得还有好多问题没有提问,面试就结束了,想到这里,心中哇凉哇凉的。。。
例如:
MySql存储引擎,建表规范,事务级别,sql优化,读写分离思想等。
Spring的理解,IOC、AOP、MVC(这个在面试题里有回答)、ORM等模块的功能及实现,竟然一点没问。。。
MyBatis框架底层原理。
Nginx反向代理、负载均衡、location匹配规则等。
设计模式也没问诶,还有JVM调优、GC、zookeeper特性等。
后来人事私聊我说,今天他们特别忙,有代码上线,跟候选人解释一下,并告诉我初试通过了,qaq
准备复试,加油!!!