导图社区 学成在线-面试相关重点
学成在线-面试相关重点,具体有项目介绍、项目有关内容知识、git相关面试、Maven相关面试知识、MySQL相关面试、Springboot相关面试,喜欢的可以点赞收藏起来。
编辑于2023-03-28 21:32:07 河南学成在线-面试相关重点,具体有项目介绍、项目有关内容知识、git相关面试、Maven相关面试知识、MySQL相关面试、Springboot相关面试,喜欢的可以点赞收藏起来。
java基础资料、Java的第一道工序是通过javac命令把Java源码编译成字节码2、为了提高效率,JVM引入了 JIT 编译器,把一些经常执行的字节码直接搞成机器码。Java是解释和编译并存。
Java EE 是 J2EE的一个新的名称,之所以改名,目的还是让大家清楚J2EE只是Java企业应用。在2004年底中国软件技术大会Ioc微容器(也就是Jdon框架的实现原理)演讲中指出:我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件)。
社区模板帮助中心,点此进入>>
学成在线-面试相关重点,具体有项目介绍、项目有关内容知识、git相关面试、Maven相关面试知识、MySQL相关面试、Springboot相关面试,喜欢的可以点赞收藏起来。
java基础资料、Java的第一道工序是通过javac命令把Java源码编译成字节码2、为了提高效率,JVM引入了 JIT 编译器,把一些经常执行的字节码直接搞成机器码。Java是解释和编译并存。
Java EE 是 J2EE的一个新的名称,之所以改名,目的还是让大家清楚J2EE只是Java企业应用。在2004年底中国软件技术大会Ioc微容器(也就是Jdon框架的实现原理)演讲中指出:我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件)。
学成在线-面试相关重点
项目介绍(分别从业务和技术两个方式介绍项目。)
项目业务介绍: 本项目包括了用户端、机构端、运营端。 核心模块包括:内容管理、媒资管理、课程搜索、订单支付、选课管理、认证授权等。
项目技术架构: 本项目采用前后端分离架构,后端采用SpringBoot、SpringCloud技术栈开发,数据库使用了MySQL,还使用的Redis、消息队列、分布式文件系统、Elasticsearch等中间件系统。 划分的微服务包括:内容管理服务、媒资管理服务、搜索服务、订单支付服务、 学习中心服务、系统管理服务、认证授权服务、网关服务、注册中心服务、配置中心服务等。
项目有关内容知识
CDN: CDN全称Content Delivery Network,即内容分发网络,本系统所有静态资源全部通过CDN加速来提高访问速度。系统静态资源包括:html页面、js文件、css文件、image图片、pdf和ppt及doc教学文档、video视频等
负载均衡Nginx: 系统的CDN层、UI层、服务层及数据层均设置了负载均衡服务,上图仅在UI层前边标注了负载均衡。 每一层的负载均衡会根据系统的需求来确定负载均衡器的类型,系统支持4层负载均衡+7层负载均衡结合的方式,4层负载均衡是指在网络传输层进行流程转发,根据IP和端口进行转发,7层负载均衡完成HTTP协议负载均衡及反向代理的功能,根据url进行请求转发。
面试-详细说说你的项目吧?
从以下几个方面进行项目介绍:
1、项目的背景,包括:是自研还是外包、什么业务、服务的客户群是谁、谁去运营等问题。
2、项目的业务流程
3、项目的功能模块
4、项目的技术架构
5、个人工作职责
6、个人负责模块的详细说明,包括模块的设计,所用到的技术,技术的实现方案等。
例子:
我最近参与的项目是我们公司自研的专门针对成人职业技能教育的网络课堂系统,网站提供了成人职业技能培训的相关课程,如:软件开发培训、职业资格证书培训、成人学历教育培训等课程。项目基于B2B2C的业务模式,培训机构可以在平台入驻、发布课程,我们公司作为运营方由专门的人员对发布的课程进行审核,审核通过后课程才可以发布成功,课程包括免费和收费两种形式,对于免费课程普通用户可以直接选课学习,对于收费课程在选课后需要支付成功才可以继续学习。 本项目包括用户端、机构端、运营端三个端。 核心模块包括:内容管理、媒资管理、课程搜索、订单支付、选课管理、认证授权等。 本项目采用前后端分离架构,后端采用SpringBoot、SpringCloud技术栈开发,数据库使用了MySQL,还使用的Redis、消息队列、分布式文件系统、Elasticsearch等中间件系统。 划分的微服务包括:内容管理服务、媒资管理服务、搜索服务、订单支付服务、 学习中心服务、系统管理服务、认证授权服务、网关服务、注册中心服务、配置中心服务等。 我在这个项目中负责了内容管理、媒资管理、订单支付模块的设计与开发。 内容管理模块,是对平台上的课程进行管理,课程的相关信息比较多这里在数据库设计了课程基本信息表、课程营销表、课程计划、课程师资表进行存储 ,培训机构要发布一门课程需要填写课程基本信息、课程营销信息、课程计划信息、课程师资信息,填写完毕后需要提交审核,由运营人员进行课程信息的审核,整个审核过程是程序自动审核加人工确认的方式,通常24小时审核完成。课程审核通过即可发布课程,课程的相关信息会聚合到课程发布表中,这里不仅要将课程信息写到课程发布表还要将课程信息写到索引库、分布式文件系统中,所以这里存在分布式事务的问题,项目使用本地消息表加任务调度的方式去解决这里的分布式事务,保存数据的最终一致性。
git相关面试
面试-Git代码冲突怎么处理?
我们在使用Git时难免会出现代码冲突的问题,出现冲突的原因是当本地文件版本与目标分支中文件的版本不一致时当存在同一行的内容不同时再进行合并时会出现冲突。出现冲突的情况有: 1、多个分支想住分支合并时 2、同一个分支下pull或push操作时
解决方法: 发生了冲突需要手动合并代码,并选择最终的版本,可以通过图形化界面处理:点击Merge,选择版本后点击Apply,提交代码病push到远程仓库。 也可以手动修改代码,将文件添加到暂存区,提交文件,push到远程仓库
面试-你是在那个分支开发啊?
我们不是直接在主分支开发,而是由技术经理创建的独立的开发分支,以版本号命名,我们是在独立的开发分支中进行开发,最后由技术经理将开发分支合并到主分支。
Maven相关面试知识
maven的常用命令有哪些?
1、mvn clean //清除target目录中生成的class文件结果
2、mvn complie //编译源代码
3、mvn test //执行单元测试
4、mvn package //打包
5、mvn install //打包病把打包好的包上传到本地仓库
6、mvn deploy //打包并把打包好的包上传到远程仓库
maven依赖版本冲突怎么处理?
maven的依赖版本冲突一般是由于间接依赖导致一个jar包既有多个不同的版本,比如a依赖了b的1.0版本,c依赖了b的2.0版本,项目依赖a和c从而间接导致了b的1.0和2.0版本。此时b有两个版本引入到项目中,当存在版本冲突时可能会出现ClassNOtFoundException、 NoSuchMethodError等错误
处理版本冲突可以使用以下方法: 1、使用exclusions排除依赖 比如:我们只依赖b的1.0版本,此时可以在依赖c时排除对b的依赖 2、使用dependencymanagement锁定版本号。通常在父工程对依赖版本统一管理。 比如;我们只依赖b的1.0版本,此时可以在父工程限定b的版本为1.0
MySQL相关面试
MySQL常见的存储引擎及区别?
一、InnoDB 1、支持事务 2、支持外键约束:外键约束其实降低了标的查询速度,增加了表之间的耦合度。 3、使用的锁粒度默认为行级锁,可以支持更高的并发;也支持表锁·。 二、MyISAM 1、不提供事务支持 2、不支持外键 3、只支持表级锁 三、总结 MyISAM管理非事务表,提供高速存储和检索以及全文搜索的能力,如果带应用中执行大量select操作,应该选择MyISAM. InnoDB用于事务处理,具有ACID事务支持等特性。如果在应用中执行大量insert和update操作,应该选择InnoDB
MySQL建表时注意什么?
MySQL建表时经验很多,如以下: 1、注意选择存储引擎,如果支持事务需要选择INnoDB 2、注意字段类型的选择,对于日期类型如果要记录时分秒建议使用datetime,只记录年月日使用date类型;对于字符类型的选择,固定长度字段选择char,不固定长度字段选择varchar,varcahr比char节省空间但速度没有char快;对于内容介绍类长文本字段使用text或者longtext类型;如果存储图片等二进制数据使用blob或longblob类型;对于金额字段建议使用DECIMAL;对于数值类型的字段在确保取值范围足够的前提下尽量使用占用那个空间较小的类型。 3、主键字段建议使用自然主键,不要有业务意义,建议使用 int unsigned类型,特殊场景使用bigint类型。 4、如果要存储text,blob字段建议单独建一张表,使用外键关联。 5、尽量不要定义外键,保证表的独立性,可以存在外键意义的字段 6、设置字段默认值,比如:状态,创建时间等。 7、每个字段要写清楚注释。 8、注意字段的约束,比如:非空,唯一,主键等。
Springboot相关面试
面试-Springboot接口开发的常用注解有哪些?
@Controller 标记此类是一个控制器,可以返回视图解析器指定的html页面,通过@ResponseBody可将结果返回json、xml数据。 @RestController相当于@ResponseBody加@Controller,实现rest接口开发,返回json数据,不能返回html页面。 @RequestMapping定义接口地址,可以标记在类上也可以标记在方法上,支持http的post,put,get方法。 @PostMapping定义post接口,只能标记方法上,用于添加记录、复杂条件的查询接口。 @GetMapping定义get接口,只能标记方法上,用于查询接口的定义。 @PutMapping定义put接口,只能标记方法上,用于修改接口的定义。 @DeleteMapping定义delete接口,只能标记在方法上,用于删除接口的定义。 @RequestBody定义在方法上,用于将json串转化为java对象。 @PathVarible接收请求路径的占位符的值。例:{id} @ApiOperation swagger注解,对接口方法进行说明。 @Autowired基于类型注入。 @Resource基于名称注入,如果基于名称注入失败则转化为基于类型注入。
面试-项目的开发流程是什么?
1、产品人员设计产品原型 2、讨论需求 //***重点掌握*** 3、分模块设计接口 //***重点掌握*** 4、出接口文档 //***重点掌握*** 5、将接口文档给到前端人员,前后端分离开发。 //***重点掌握*** 6、开发完毕进行联调测试 //***重点掌握*** 7、测试完毕发布项目,有运维人员进行部署安装。(也可由后端人员部署)//***重点掌握***
前后端分离开发中前后端交互的流程是什么?
1、前端请求后端服务提供的接口。(通常为http协议 ) 2、后端服务的控制层Controller接收前端的请求。 3、Contorller层调用Service层进行业务处理。 4、Service层调用Dao持久层对数据持久化。 整个流程分为前端、接口层、业务层三部分。
项目中模型类的作用?
在项目中有两类模型类: 1、DTO数据传输对象、2、PO持久化对象。 DTO用于接口层向业务层之间传输数据,PO用于业务层与持久层之间传输数据。 3、有些项目还会设置VO对象。 VO对象用在前端与接口层之间传输数据,当前端有多个平台且接口存在差异时就需要设置VO对象用于前端和接口层传输数据。
比如: 课程列表查询接口,根据需求用户在手机端也要查询课程信息,此时课程查询接口是否需要编写手机端和PC端两个接口呢?如果用户要求通过手机和PC的查询条件或查询结果不一样,此时就需要定义两个Controller课程查询接口,每个接口定义VO对象与前端传输数据。 手机查询:根据课程状态查询,查询结果只有课程名称和课程状态。 PC查询:可以根据课程名称、课程状态、课程审核状态等条件查询,查询结果也比手机查询结果内容多。 如果前端的接口没有多样性且比较固定,此时可以取消VO,只用DTO即可