一.个人介绍,
面试官您好 ,今年28岁,今天是过来面试java开发的工作,之前有从事了4年多的java开发,工作中主要用到的后端技术ssm springboot 等,之前也有用过cloud 开发,前端的话主要是 ext.js eacharts等,linux的一些常用命令,可以熟练sql语句,最近的项目有用到大数据平台,所以自己也搭建了Hadoop集群,最近又在学习spark的相关技术,平时喜欢关注Java的相关公众号和大数据相关公众号,业余时间喜欢打打篮球,这就是个人的自我介绍…
二.项目介绍
最近做的项目是统一监管报送平台,项目技术是后端ssm框架前端ext.js 还用到星环的大数据平台,这个项目是以各家银行需要向人民银行报送自己家行的业务数据为目的,通过人民银行下发的相关报送文件,根据该文件配置好检验规则,检验规则就是用来检验数据的正确性,就是一条查询的sql,检验完以后把不符合规则的数据展示出来,进行补录,补录之后可以提交给给领导审批 审批之后可以进行报文生成,之后拿着报文进行上报!我在项目中主要负责的是检验规则配置,报表模版配置,数据检验 ,数据补录,数据查询,数据下载审核,填报说明管理,报文生成 等模块,因为有些银行的数据是在大数据平台,涉及到跨数据的检验和补录而我们做的功能可以主要是根据oracle的 ,为了模拟场景于是自己搭建了Hadoop集群,可以将业务数据放在hdfs 然后通过Hql 来进行数据的相关操作……后边去客户现场根据提供的数据测试,部署该项目
工作当中遇到的问题:
1.咱们系统做的是针对oracle做的校验补录生成报文操作,后边行方的经理要求他们行里的业务数据放在大数据平台,咱们自己系统的数据还是放在oracle,就涉及到两个数据源的操作,
后来查询资料,决定通过配置一张映射表,通过查询配置的数据源链接地址,用户名密码和连接方式然后在代码中通过jdbcTemplate操作不同数据源的数据,然后咱们的校验是针对oracle,设计的
是校验不通过的数据直接打一个nopass的标志,是一条一条update操作,这样在oracle操作看不出很慢,但是在大数据平台修改一条数据很慢,后来通过谈论把校验改成直接一条查询sql,把不符合条件的数据
查询出来展示到页面,然后再进行相应的补录操作
三,java基础:
1,jvm
1,java异常:
2,反射:
3.泛型:
4.io
java集合:list,set,map
java多线程
四.spring
ioc:IOC就是控制反转,是指创建对象的控制权的转移,以前创建对象的主动权和时机是由自己把控
的,而现在这种权力转移到Spring容器中,并由容器根据配置文件去创建实例和管理各个实例之间的依
赖关系,对象与对象之间松散耦合,也利于功能的复用。最直观的表达就是,
IOC让对象的创建不用去new了,可以由spring自动生产,使用java的反射机
制,根据配置文件在运行时动态的去创建对象以及管理对象,并调用对象的方法的
aop:AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影
响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系
统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务
处理。
五.spring主要由以下几个模块组成:
Spring Core:核心类库,提供IOC服务;
Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);
Spring AOP:AOP服务;
Spring DAO:对JDBC的抽象,简化了数据访问异常的处理;
Spring ORM:对现有的ORM框架的支持;
Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传;
Spring MVC:提供面向Web应用的Model-View-Controller实现。
六、Spring MVC流程
工作原理:
1、 用户发送请求至前端控制器DispatcherServlet。
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截
器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView。
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
七、 DispatcherServlet响应用户。
SpringBoot篇cloud
1、什么是SpringBoot?为什么要用SpringBoot
用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件)
创建独立的spring引用程序 main方法运行
嵌入的Tomcat 无需部署war文件
简化maven配置
自动配置spring添加对应功能starter自动化配置
spring boot来简化spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品
级别的应用
八,设计模式:
九,数据库:
sql调优:
1.从建表开始:
(1),创建表时null是默认值,可以使用0,-1代替默认值,
(2).选择简单的数据类型:可以使用varchar代替char,只含数字类型的字段不使用字符型,使用数字类型
2.查询开始
(1),数据量比较大,表的主键,外键必须有索引,尽量建立索引查询,在where及order涉及的列建索引,
经常进行insert,update,delete操作不建立索引,或者表数据量很小,列名不经常出现在链接条件where条件后
(2),sql尽量大写,不要select*, 写成需要查询的字段,
(3),尽量减少子查询的层数,在子查询进行数据筛选
(4).in 和 not in 可以换成exists
(5).可以使用表的别名,用sql链接多个表时,用表的别名可以减少解析的时间
(6).可以使用“临时表”来暂存中间结果,可以避免程序多次扫描主表,减少阻塞,提高并发
(7).有批量更新或者新增时,可以组合成一条sql执行,(insert all)而不是一条一条执行
(8).分区:用户建表的时候建立分区参数,可以让单表存储更多数据,分区表数据好维护,查询可以带上分区列,速度很快
(9).分表:一张表数据量过大,可以分成多张表,把一次查询分成多次,然后把结果组合起来返回,水平拆分,垂直拆分,以某个字段拆分,缺点:会修改源代码,成本太高
(10).分库:读写分离库,开发成本高
(11).使用hadoop做存储
十,hadoop:
十一,zookeeper:
十二,kafka:
十三,hbase:
十四,spark: