1. 2021面试总结
J229公司及面试题 ------------------------229------------------------铭日芷星 14~18K mysql主从同步什么原理描述mysql中,索引,主键,唯一索引,联合索引的区别简述MyISAM和InnoDB的有什么不同?redis分布式所和同步锁在开发中怎么区分redis存储的类型有哪些,使用场景有哪些redis能存放的数据量有多大(记不清,反正问过这个题,关于redis的数据存储量的)springCloud微服务都使用过哪些,都是为了解决什么问题jwt实现签发的底层原理是什么?书写人生 8~10k先来就填表,根据你填的期望工资上机测试打代码,薪资不同做不同的题。 比如一个steam排序,去重,再封装vo,多重for循环逻辑判断输出,多线程线程和进程区别,java8新特性,集合ArrayList、hashmap底层,redis的双写一致性,互斥锁。还有些项目中使用的细节,反正项目细节要慢慢讲,他一直会怀疑你的经验那些有问题,介意别包装德科信息技术有限公司 8k~12k springmvc执行流程有几种创建线程的方法String,StringBuilder和SpringBuffer的区别和哪个是线程安全的有哪些设计模式你用过哪些消息中间件集合有哪些,hashmap的底层是用什么实现的怎么优化数据库(用索引)。索引什么情况下会失效九恒星 7-12K 观察者监听者模式.Servlet初始化和生命周期.然后就是主要聊之前的项目. 金融项目优先.对项目考察的多.要多讲讲你对项目中技术的使用和遇到的问题.他们用的Oracle数据库.如果有兴趣可以专项练习. WEB MVC 里面的知识点多看看. 面试的好.10K可以拿软通动力&平安金科&蚂蚁金服一面&三零 12K-18K 主要是项目业务介绍+少许基础hashmap和concurrenthashmap底层区别,synchronized在各个jdk版本中做过哪些优化,日常开发中用过哪些JUC下的各种锁,对于数据结构是否了解,spring-aop是什么,是怎么通过代理实现切入,日常开发中用过哪些设计模式,了解过jvm中的垃圾回收算法吗?讲一讲volatile关键字底层原理,nacos怎么实现高可用,生产中怎么查看日志,了解过项目是怎么部署上线的吗?项目部署在几台服务器上?日常的访问量和峰值有多少?平安科技 6-8K 技术组长开门见山直接问最近的项目 简述项目然后项目难点在哪 是否应用了集群和分布式 项目数据量什么级别 是否应用了同步锁 各种锁 . 数据库的索引 ,什么时候用索引 建伟科技 6-10k 流程:自我介绍->项目介绍->java基础题重点问的项目,包括项目使用技术、项目大小、多大并发量、用户数量级别。然后就是给你算法题,你口头解答灵动信息技术有限公司6-8k 直接跳过项目 问题1:springBoot的自动装配机制?如何取消自动装配 问题2:spring创建的Bean和自己手动创建的bean的生命周期, 如何消亡?是否立即消亡?若要立即消亡如何操作? 问题3:IOC和DI 自己的理解? 问题4:Redis应用场景 问题5:hashtable和currentHashMap的区别?文思海辉 8~12k1、STRING 、STRINGBUFFER 、STRINGBUILD的区别2、JAVA三大特性3、继承的特性4、JAVA的作用域5、INT和INTEGER的区别6、HASHMAP的底层7、ARRAYLIST和LINKEDLIST的区别,哪个是线程安全的8、STRING A = NEW STRING(“XX”)创建了几个对象,哪两个对象,这两个在哪9、 为什么JAVA语言可以跨平台10、== 是干什么的 如果两边是对象的话呢11、会不会安装数据库12、git的使用,遇见冲突怎么解决13、maven的使用"14.spring的注入方式有哪些?15.Java的三大特性16.继承是?17.hashmap底层18.==是干什么的?19.Java jdk1.8新特性流对排序是怎么?20.Servlet生命周期21.mybatis框架一对多是如何实现的?22.String、String buffer、String build的区别23.什么是装箱和拆箱24.能否通过编译float a = 3.4,为什么不能?float类型的能赋值给double类型的吗?double类型的能赋值给float类型吗25.抽象类与接口的区别26.hashmap和hash table,hash table的什么不能为空?27.set的什么可以为空,有几个可以为空?"28、字节流和字符流区别29、怎么解决Springboot循环依赖30.jwt是什么,它的组成是?"31、字节流和字符流的使用场景32、springMVC的使用原理33、mybatis是怎样实现一对多查询的34、linkedlist和hashlist的区别!!!坑,没有hashList35、在本地是如何建立你的项目环境的36、MySQL的安装过程中遇到了什么问题J232公司及面试题 ------------------------232------------------------一、博彦科技有限公司1. 谈一谈最近一个项目干了些什么答:最近一个项目是医疗系统,我主要负责出院管理,对各表的数据进行处理。2. 谈一谈数据库索引(查询速度快),然后为什么快。答:主键、唯一、普通字段、复合(多个字段在一起生成一个索引)如果在大量的数据中,直接判断一个值是否null,这样的性能极低,所以唯一索引性能低于主键索引因为索引是B+数查找行为前序循环中序循环后序循环 可以保证性能较高,为什么我们会选择主键索引,因为主键拥有唯一和非null的状态,可以再次提升索引性能3. 举了两个实际场景,数据库应该怎么查。答:1-查询一个公司中姓李的职员的有多少select count(id)from zhi_yuan where password=‘123456’扩展问:count(1) count(*) count(id) 哪一种性能高区分 mysql5.5之前和之后5.5之后 count(*)默认找主键索引,如果没有,则找普通字段(官方做了对应的优化处理,仅限于order主键的时候)如果要求手写sql:尽可能不要出现like,不要出现null判断,不要出现or,不要出现in或者not in,order尽可能基于索引排序INSERT into jue_se(jue_se_ming_cheng) select jue_se_ming_cheng from jue_se;select id from jue_se where id>10 ORDER BY id limit 10;select id from jue_se limit 200000,10;select count(*) from user where username='' and password='' limit 1;4. 联合查询,应该注意些什么(性能问题)UNION关键字可以把来自多个SELECT的语句的结果组合到一个结果集中,这种查询方法称为并运算(UNION)或联合查询。合并时,多个SELECT子句中对应的字段数和数据类型必须相同。在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:查询1 UNION (查询2 UNION 查询3
2. springmvc&spring&myabtis
SpringMVC&Spring&Mybatis什么是SSM?企业中最主流的框架组合解决方案:SSM(Spring MVC、Spring、Mybatis) 整合方案什么是SSH?曾经企业中的主流框架组合:SSH(Struts、Spring、Hibernate)学习框架的目的?企业要求开发人员学会各种框架的目的,是为了提升开发效率和开发时间,对应降低企业成本,提升企业利润比Springmvc替代了什么SpringMVC替代了我们曾经的Servlet(JSTL+EL+JSP)什么是耦合度在代码中类与类之间或者对象与对象之间的依赖关系, 对象调用对象的层级越深,则依赖度越高,对应耦合度也就越高,反之则是耦合度低,0耦合指的是每一个类或对象之间都无依赖关系。而耦合度过高会导致维护成本越高Idea中maven的核心就是pom.xml文件中央仓库的作用它会保存所有驱动包,当我们需要调用的时候,可以根据指定的地址进行引用,这样的好处在于多个工程可以重复使用相同的驱动包,而不是增加硬盘的压力 它可以根据不同的驱动版本进行保存,所以我们可以非常自由随时更换版本 它可以做到一个真正的驱动和版本统一驱动包管理<dependencies><dependencies> <!-- 驱动依赖管理 --> <dependency> <!-- 每一个驱动包以 dependency标签为父标签 --> <groupId>junit</groupId> <!-- 分组的名称,必须唯一 --> <artifactId>junit</artifactId> <!-- 驱动的名称,必须唯一 --> <version>4.11</version> <!-- 驱动的版本号 --> <scope>test</scope> <!-- 执行域 前期可以不需要 --> </dependency></dependencies>每一个驱动包以 dependency标签为父标签 当出现点的行为(com.gxa),就是两个目录,甚至更多的目录不是一个dependency就肯定对应唯一一个jar包,而是一个dependency至少对应一个jar包中央仓库的加载流程1.我们首先配置dependency标签,加入指定的驱动包。并手动import更新pom文件2.这时候,idea工具会自动检查本地的中央仓库是否存在此驱动3.如果不存在,则从全球中央仓库自动下载,并且根据组名、驱动名、版本号保存本地中央仓库4.这时候检查lib驱动库是否存在此驱动maven项目,一样可以通过WEB-INF/lib目录进行加载驱动什么叫做断点续传可以随时暂停下载。可以随时根据暂停点继续开始下载中央仓库中驱动版本的选择RELEASE版本号中,如果出现RELEASE代表最终版,一般在实际开发中,我们都会选择RELEASE版本BETA这个版本是测试版RC这个版本也是测试版,也可以称呼为临时版目前版本还会出现没有标示的,这种版本也是稳定版如果驱动标注了特殊单词的,那么找寻RELEASE版本,如果没有,则找寻没有字母版本的Spring驱动版本统一性所有Spring驱动的版本必须统一,所以,我们都会自定义一个spring版本管理的字段参数properties<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <spring.version>4.3.16.RELEASE</spring.version> </properties>什么是脚手架因为java工程的环境配置非常的繁琐,所以企业级项目提出一种新的概念,提前搭建好一个基础的环境,方便每一次新项目开发的时候直接引入基础搭建环境,这样的基础环境叫做脚手架(骨骼)springmvc的核心就是DispatcherServletorg.springframework.web.servlet.DispatcherServletresources目录存放的是什么resources目录存放的全部是项目中的资源文件和配置文件(通常存放的文件后缀名都是 .xml .json .properties .yml)springmvc基本的访问流程(url地址->web.xml->springmvc.xml->controller->requestmapping->return)1. 用户输入一个地址 http://localhost:8080/hello2. 此地址会被springmvc截获,取出端口之后的请求地址,也就是 /hello3. 然后通过web.xml关联到指定springmvc.xml配置文件中4. 再通过springmvc.xml中的 <context:component-scan base-package="com.gxa.j259.controller" /> 标记,检查哪些一个包是需要扫描的5. 检查这些package中的拥有 @RestController 和 @Controller 类头注解的java文件6. 然后在每一个这样的java文件中,匹配每一个方法头上的注解@RequestMapping("/hello") 里面的路径是否匹配7. 如果匹配,则调用对应的方法返回,如果都没有匹配则抛出404错误HTTP错误码 404 找不到指定地址的网页内容或者后台资源 500 在web工程中,如果出现java语法错误,则会抛出500异常 405 未重写HTTPServlet中的对应do方法,导致用户访问时,直接抛出系统内核代码的异常 200 请求响应成功 302 缓存HTTP Status 415 – Unsupported Media Type 这样错误代表前端没有使用json的头文件格式(contentType)上传HTTP Status 400 – Bad Request 当发生400错误,可能是前端没有把json对象转换成字符串HTTP Status 400 – Bad Request 当使用form表单数据提交时,如果后台强制要求传递指定的参数,但是前端没有传递,则会抛出400错误HTTP Status 400 – Bad Request 当springmvc自动转换数据类型时,发生错误,也会抛出400错误HTTP Status 405 后端没有重写对应的请求模式方法什么是SpringMVC?SpringMVC是基于JAVA的,实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将WEB层进行职责解耦,把复杂的WEB应用分成逻辑清晰的几步化,简化开发,减少出错,方便组内开发人员之间的配合。简述下SpringMVC的运行流程?用户发送请求至前端控制器(DispatcherServlet).前端控制器(DispatcherServlet)收到请求后,调用处理器映射器(HandlerMapping)处理器映射器(HandlerMapping)根据请求的URL找到具体的处理器(Handler),生成处理器对象与处理器拦截器(如果有则生成)一并返回给前端控制器(DispatcherServlet)。前端控制器(DispatcherServlet)通过处理器适配器(HandlerAdapter)调用处理器(Handler)。开始执行处理器(Handler),常说的后端控制器(Controller)。后端控制器(Controller)处理完成后返回@Response对应的json对象ModelAndView。针对曾经的转发和转向处理器适配器(HandlerAdapter)将Controller执行结果ModelAndView返回给前端控制器(DispatcherServlet)。前端控制器(DispatcherServlet)会将ModelAndView传给视图解析器(ViewReslover)。解析器(ViewReslover)完成解析后返回具体View。前端控制器(DispatcherServlet)对View进行渲染视图,也就是将数据填充进视图中。最后,响应用户请求。SpringMVC的优点。他支持多种视图技术,而不仅仅局限于JSP、JSTL、EL还有支持普通的HTML。和Spring框架继承。清晰的角色分配:前端控制器,处理器映射器,处理器适配器,视图解析器。支持多种请求资源的映射策略。Spring的映射策略有哪些?按Bean名称映射请求,这也是SpringMVC默认的映射策略,他是通过BeanNameUrlHandleMapping这个对象来达到目的的。可以理解为键值对映射关系,请求的url看做键,接着由键找到对应的处理器。按控制器名成员映射请求,他是根据WEB引用程序上下文中声明的控制器的类名称,自动生成映射,他是通过ControllerClassNameHandleMapping对象来达到目的的。用定制的映射定义来映射请求,这需要我们通过SimpleUrlHandleMapping来做到这一点。SpringMVC的主要组件?前端控制器。接收请求,相应结果,主要作用是降低了其他组件之间的耦合度。处理器映射器。根据请求的URL来查找处理器。处理器适配器。根据映射器找到的处理器去处理相关的处理器。视图解析器。
转载 https://www.yuque.com/zhanghongneng/oqxh5a/uzgpdt