Skip to main content

moregeek program

第一场面试_延年有余的博客-多极客编程

简单三分钟自我介绍


自我介绍这里一笔带过,给对面介绍自己内在 + 外在 + 校园经历 + 校园项目 + 意向岗位


技术面


1. Spring 原理篇


1.1 有使用过Spring吗,说一说它的 SpringMVC 原理


主要有5个组件,前端控制器、映射器、处理器、处理器适配器、视图解析器




  • 前端控制器也就是中央处理器,它主要负责前端用户的请求和对其他组件的转发调用;




  • 前端控制器接收到请求后,会把请求转发给处理器映射器,处理器会根据配置或注解(@Controller)找到最终要执行的Handler;




  • 然后将Handler(自己的业务处理)对象以及其对应的拦截器,封装到HandlerExecutionChain对象中并以它的形式放回;




  • 前端控制器根据获取到的Handler(Controller),去选择一个合适的HandlerAdapter(它还支持Servlet、HttpRequestHandler、ThrowawayController),成功获取到会先去执行拦截器;




  • 这时将开始对提取Request中的模型数据,并且将Handler的入参进行数据填充,以至于我们写控制层方法时,入参是前端传来的值,在填充过程中,根据自己的配置,Spring还可以帮你做一些额外操作:



    • Json/Xml 数据转换成对象
    • 格式化请求数据
    • 校验



  • Handler执行完成后,返回一个ModelAndView(视图和视图需要填充的模型数据)




  • 前端控制器根据返回的ModelAndView,选择合适的ViewResolver




  • ViewResolver 结合Model和View,来渲染视图




  • 最终前端控制器将渲染结果返回给客户端




1.2 springboot 有什么优点


springboot 它可以帮我快速、使用最低代码最少时间开发出一个项目,不想 SpringMVC,需要繁琐写很多配置信息,我们只关注写业务代码即可。


通过配置文件解耦代码,在一些可能改动的配置信息,可以不通过修改代码再打包部署,而是让代码去外部读取该配置文件,再去运行。


还有SpringBoot是使用了maven 可以方便对版本的管理,能够让自己不需要考虑版本依赖问题和兼容版本的问题。


Redis 篇


有使用过 Redis吗


有,它是一个缓存数据库,主要存储的是k-v类型的数据。


那说说它的一个缓存雪崩?


嗯?缓存雪崩的话,就是key集中失效,导致 Redis 相当于宕机,大量请求依旧打到mysql数据库上了。


这里总结一下,其实雪崩Redis服务基本不可用了,存储层的调用量会暴增,造成存储层也会挂掉的情况,而且雪崩会出现周期性的峰值,因为就算缓存失效了,请求到了存储层,获取到数据后,是会再做一次缓存的,所以会出现周期性峰值。


致命的原因是存储层在暴增的情况下扛不住调用后,导致数据库直接挂掉了。


有什么解决措施?


嗯?我们可以对那个 key 的缓存时间设置更长一些,缓存雪崩导致的原因是因为太过于集中失效,导致暴增,那么如果我们均摊一下时间,就能避免出现该情况,所以我们可以对缓存时效设置的更随机性一些,且对一些热点数据缓存时间设置永久性。


©著作权归作者所有:来自51CTO博客作者延年有余的原创作品,请联系作者获取转载授权,否则将追究法律责任

设计模式之观察者模式_程序员田同学的博客-多极客编程

观察者模式是极其重要的一个设计模式,也是我几年开发过程中使用最多的设计模式,本文首先概述观察者模式的基本概念和Demo实现,接着是观察者模式在Java和Spring中的应用,最后是对观察者模式的应用场景和优缺点进行总结。 一、概念理解 观察者模式:定义对象之间的一种一对多的依赖关系,使得每当一个对象的状态发生变化时,其相关的依赖对象都可以得到通知并被自动更新。主要用于多个不同的对象对一个对象的某个

认识java的整形数据结构_华为云开发者社区的博客-多极客编程

摘要:java中一切都是对象,为什么int不用创建对象实例化,而可以直接使用?本文分享自华为云社区《​​【Java】对基本类型-整型数据结构的认识​​》,作者: huahua.Dr 。整型数据类型有两个:基本类型和引用类型(包装类)整数型基本类型:byte,int,short,long其引用类型:Byte,Integer,Short,Long他们之前主要的区别在于:存储占用的空间不同,分别是1,2

设计模式之备忘录模式_程序员田同学的博客-多极客编程

无论是我们在使用word还是记事本,系统都会为我们提供撤销的功能,这几乎是人人都会使用到的功能,而在我们实际开发中,会不会存在一个很复杂的对象,当更改了其中的某一个属性以后,也提供撤销的功能,可以快速恢复到更新前的状态。提供该功能的模式也正是今天的主题——备忘录模式。 一、概念理解 书上备忘录的解释是,在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢

设计模式之状态模式_程序员田同学的博客-多极客编程

实际开发中订单往往都包含着订单状态,用户每进行一次操作都要切换对应的状态,而每次切换判断当前的状态是必须的,就不可避免的引入一系列判断语句,为了让代码更加清晰直观,我们引入今天的主角——状态模式。 一、概念理解 假设订单状态有,下单、发货、确认收货,如果用户确认收货,在常规编程中就要判断当前用户的状态,然后再修改状态,如果这种情况下使用状态模式。 将各个状态都抽象成一个状态类,比如下单状态类、发货

设计模式之策略模式_程序员田同学的博客-多极客编程

在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要使用一系列的判断语句,判断用户类型,这种情况下就可以使用策略模式。 一、概念理解 策略模式的概念很好理解,它将对象和行为分开,将行为定义为 一个行为接口和具体行为的实现,每个if判断都可以理解为一个策略。 如果在收银系统中使用策略模式,要将普通、中级、高级会员分别定义一个具体策略类,并实现各自的方法,定义一个环

设计模式之模板方法模式_程序员田同学的博客-多极客编程

在我们实际开发中,如果一个方法极其复杂时,如果我们将所有的逻辑写在一个方法中,那维护起来就很困难,要替换某些步骤时都要重新写,这样代码的扩展性就很差,当遇到这种情况就要考虑今天的主角——模板方法模式。 一、概念理解 模板方法模式的概念很简单,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 既然概念叫“骨架”,那想当

兼容性测试包含哪几类呢?_多测师11的博客-多极客编程

  兼容性测试包含哪几类呢?  (1)浏览器方面  关于浏览器的兼容性测试,主要是检查页面的交互、元素和样式展示是否正常。我们都知道,目前市面上主流的浏览器非常多,像:360、搜狗、火狐等等。  在进行测试的时候,由于兼容性问题很多,所以小编给大家整理了一些测试注意事项,一起来看一下:  ①明确目标用户:虽然产品经理会统计主流的浏览器和稳定的版本有哪些,但是,作为测试人员还是应该深入目标用户,去了

设计模式之观察者模式_程序员田同学的博客-多极客编程

观察者模式是极其重要的一个设计模式,也是我几年开发过程中使用最多的设计模式,本文首先概述观察者模式的基本概念和Demo实现,接着是观察者模式在Java和Spring中的应用,最后是对观察者模式的应用场景和优缺点进行总结。 一、概念理解 观察者模式:定义对象之间的一种一对多的依赖关系,使得每当一个对象的状态发生变化时,其相关的依赖对象都可以得到通知并被自动更新。主要用于多个不同的对象对一个对象的某个

微信原生组件|基于小程序实现音视频通话_mb62c3fbf0624ad的博客-多极客编程

1 微信小程序原生推拉流组件功能简介本文将介绍如何使用微信小程序原生推拉流组件 \ 进行推拉流,快速实现一个简单的实时音视频通话。由于微信小程序原生推拉流组件使用起来比较复杂,推荐开发者使用即构封装的音视频SDK \ 组件实现视频通话,可参考 ​​实现视频通话​​。2 实现微信小程序音视频通话的前提条件在实现基本的实时音视频功能之前,请确保:已在项目中集成 ZEGO Express SDK 即构音

轻量级工作流引擎的设计与实现_京东云官方的博客-多极客编程

一、什么是工作流引擎工作流引擎是驱动工作流执行的一套代码。至于什么是工作流、为什么要有工作流、工作流的应用景,同学们可以看一看网上的资料,在此处不在展开。二、为什么要重复造轮子开源的工作流引擎很多,比如 activiti、flowable、Camunda 等,那么,为什么没有选它们呢?基于以下几点考虑:最重要的,满足不了业务需求,一些特殊的场景无法实现。有些需求实现起来比较绕,更有甚者,需要直接修

幂等设计详解_京东云官方的博客-多极客编程

导读本文主要从研发人员的角度,结合研发人员日常常见的各类业务场景,从经典系统框架的每一层入手分析幂等处理的时机。希望通过这篇文章的分析,让开发者在日常开发中对幂等的处理不再陌生。抓住导致请求、接口不幂等的本质,在工作中避免再陷入这个陷阱中。幂等、幂等性这词,作为一个研发人员是再熟悉不过的,那是否有深入思考过幂等产生的背景、为什么需要幂等,如何做才是幂等的?今天将结合业务场景及请求的过程来分析解决幂

软件缺陷的种类划分_多测师11的博客-多极客编程

  按照软件缺陷的产生原因,可以将其划分为不同的缺陷类别:  1、功能不正常  简单地说就是所应提供的功能,在使用上并不符合产品设计规格说明书中规定的要求,或是根本无法使用。这个错误常常会发生在测试过程的初期和中期,有许多在设计规格说明书中规定的功能无法运行,或是运行结果达不到预期设计。最明显的例子就是在用户接口上所提供的选项及动作,使用者操作后毫无反应。  2、软件在使用上感觉不方便  只要是不