Java的面试总结

Java的面试总结

前言

今天接到一份Java后端开发工程师的面试,怎么赶过去就不说了,就想分享一下今天的面试经历,顺便给自己总结一下,给自己大脑放松一下。首先,面试开始的自我介绍,今天的面试官他说他在微软干过,所以给我的感觉就是很资深,就直接给我进入主题了,按道理的一般面试官都很问我一些比如:Spring IOC的生命周期、SpringMVC的运行流程或者原理,或者是根据我的简历跟我谈谈,但是他直接给我略过这些。

正文

问题一

首先第一个问题,开门见山,你懂微服务吗?那么说说你对微服务的看法?

当然,这个问题是很常见的

答:

微服务架是从单体应用、SOA架构演变过来,对比SOA架构粒度会更加精细,每个服务于服务之间相对独立,互不影响,每个服务都有自己单独的逻辑,服务与服务之间采用RPC远程调用,微服务架构相对来说更加轻巧、轻量级,更适合敏捷开发。

问题二

他从我上一个问题的答案中进行了提问

说说你对网站架构的了解

我记得我有分类说,这个问题还好,我大概说了。

传统架构

传统项目一般是SSH、SSM,系统分为三层架构,分别是业务逻辑层、持久层层、WEB层。

分布式架构

根据业务需求进行拆分成N个子系统,多个子系统相互协作才能完成业务流程子系统之间通讯使用RPC远程通讯技术。

SOA架构

SOA是相对传统的单体框架来说,系统的耦合度比较高,不便于系统团队的开发,就将共同的业务逻辑抽取出来,封装成单独的服务 ,分为表现层,业务逻辑层

业务系统分解为多个组件,让每个组件都独立提供离散,自治,可复用的服务能力

通过服务的组合和编排来实现上层的业务流程

微服务架构

微服务是指开发一个单个、小型的但有业务的服务,每个服务都有自己的处理和轻通讯机制,可以部署在单个服务器上,让专业的人做专业的事情。

当然,我那时候没回答这么细,只是大致说了。

问题三

以前传统架构方案不行?为什么一定要微服务方案?好像大概是这个意思

这个我问他可以跟他聊一下传统架构的缺点,以及微服务架构的好处;

传统架构也就是单点应用,就是SSH架构或者SSM架构,业务没有进行拆分,都写同一个项目工程里面,一般是适合于个人或者是小团队开发。这种架构模式,系统耦合度比较高,一旦有一个模块导致服务不可用,可能会影响整个项目。还有就是只适合0-100的访问量,对于高并发问题的话,用户体验不好。

微服务

1.微服务架构基于 SOA架构 演变过来,继承 SOA架构的优点,在微服务架构中去除 SOA 架构中的 ESB 消息总线,采用 http+json(restful)进行传输。

2.微服务架构比 SOA 架构粒度会更加精细,让专业的人去做专业的事情(专注),目的提高效率,每个服务于服务之间互不影响,微服务架构中,每个服务必须独立部署,微服务架构更加轻巧,轻量级。

3.SOA 架构中可能数据库存储会发生共享,微服务强调独每个服务都是单独数据库,保证每个服务于服务之间互不影响。

4.项目体现特征微服务架构比 SOA 架构更加适合与互联网公司敏捷开发、快速迭代版本,因为粒度非常精细。

问题四

基于上述问题,公司的系统需要考虑到什么情况?

这个问题很开放性。可以随意说

问题五

分布式微服务架构设计的各个节点服务器的进行升级,这个过程应该是怎样或者应该注意些什么?这个问题,我当时听到就感觉脑子空白,记得那时候缓了一分钟,这个问题我都没遇到过,反正我记得回答的很乱,也没到点上。

之后请教的阿里的架构师帮我回答了一下,他大概给我一点思路,版本控制、开关控制、灰度控制。哈哈,而且还给我提供了资料。

想了解的话,在下面评论一下,我分享那位大神的资料。

问题六

他问了个场景题,用户进行登录系统,连续输入错误账号密码10次,锁定用户账号1小时。

答:

首先,系统的设计使用的是SSO单点登录,用户的登录请求经过nginx的反向代理服务器,再由zuul网关本地负载均衡,处理所有的请求,我先是说登录的大致流程,接下来才说问题的正文,就是用redis记录用户的错误密码次数,判断达到10次后,设置用户的数据过期处理以及对于消息队列监听设置用户的状态。大概是这样答的。

面试官说我说的有点多余了,大致前部分就行,他说大概能够及格吧!这回答。

问题七

说说你对redis 的看法,什么时候用到redis

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库(nosql),应用在缓存。它通过提供多种键值数据类型来适应不同场景下的存储需求。

redis的应用场景

缓存。

分布式集群架构中的session分离。

任务队列。(秒杀、抢购、12306等等)

应用排行榜。(SortedSet)

网站访问统计。

数据过期处理。(expire)

大概就做这些,我现在做的比较详细,回答的时候倒是没有。

问题八

居然你说到redis,然后他就问了挺多关于redis的问题。这个没什么印象,就不细说了,自己脑补。

后面还有几个问题有点忘了

总结

本来是求职java实习的,面试的时候总感觉被面试官带着回答,跟老师以及同学聊了之后,才发现自己被带偏了,脱离了自己面试岗位的内容。才发现,他并不是说希望你一定能回答所有问题,他探测你各方面的底线,确定你是否能够回答,其实我也感觉应该是框架、网络、JVM等的一些问题。所以,无论面试官问你什么问题,自己坦诚一点,知道就说知道,懂一点的话,也别乱说,没技术可以学,千万别不懂装懂。面试了这么多次,面试题得多背,项目也得多做。

转载于:https://juejin.im/post/5d07b383f265da1ba647ed4a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值