凯捷Java二面问题总结
1.抽象类和接口的区别和使用场景
抽象类定义:用abstract关键字修饰的类就是抽象类
注意:
- 不允许final修饰抽象类或抽象方法(final关键字修饰的类不能被继承,final修饰的方法不能被重写,这样的话,定义一个没有具体实现的方法和类是么有意义的)。
- 也不允许static关键字修饰抽象方法(static关键字修饰的方法是通过方法名直接访问,他不能访问实例变量和实例方法,他就只能调用本身的方法,不具备用上转型对象调用子类方法的能力,也是没有意义的
- 抽象类中可以有抽象方法,也可以没有抽象方法
接口的定义:用interface关键字修饰的类。
注意:
- 接口中只有抽象方法,接口中常量都是用public修饰,方法都是用public abstract修饰,我们在定义时,这些修饰符,系统都是帮我们自动省略的。
- 一个类可以实现一个或者多个接口,接口名之间用逗号隔开。
- 如果非抽象类实现接口,需要重写里面所有的方法,抽象类可以重写接口中的方法,也可以直接拥有接口中的方法。
区别:
1.接口和抽象类都不能实例化,接口必须是abstract方法,而抽象类不用。
2.接口可以用于多继承。抽象类只能继承一个。
3.接口只能有常量,抽象类可以有常量和变量。
4.继承的关键字不一样:接口继承接口和类继承类用extends,类继承接口用implements。
5.抽象类将其抽象方法的实现交给子类,接口将抽象方法的实现交给实现该接口的类。
应用场景:
抽象类:模板设计模式。某个问题需要子类除了需要重写父类的abstract的方法,还需要从父类继承变量或者重写重要的非abstract方法,就考虑abstract类
接口:代理模式。某个问题不需要继承,只需要很多子类给出重复的abstract方法的具体实现细节,就用接口
2.POP、OOP、 AOP区别。AOP 解决什么问题,在项目里面的使用?
POP(面向过程编程):
优势
- 流程化编程任务明确,在开发以前基本考虑了实现方式和最终结果;
- 开发效率高,代码的短小精悍,善于结合数据结构来开发高效率的程序;
- 流程明确,具体步骤清楚,便于节点分析。
缺点
- 须要深刻的思考,耗费精力;
- 代码重用性低,不易扩展,维护起来难度大;
- 对复杂业务,面向过程的模块化难度较高,耦合度比较高。
OOP(面向对象编程):
三大特征:封装、继承、多态
1)封装性:
封装是指将对象信息抽象成一个实体,其中属性方法不容许外部程序直接访问。简单来讲,封装就是要找出某一类事物的公共属性而后提取出来。
(2)继承性:
子类继承了父类全部的成员方法和属性,能够拥有本身的属性,子类也能够重写父类方法。继承解决了代码的重用问题 .
(3)多态性:
多态存在的三个条件:1.继承 2.重写 3.父类引用指向子类对象
多态的实现方式1.接口实现,继承父类方法重写,同一个类中进行重载数据结构
优势
- 结构清晰,注重 对象和职责,不一样的对象承担不一样的职责;
- 封装性,将事务高度抽象,便于流程中的行为分析、操做;
- 容易扩展,代码重用率高,可继承,可覆盖;
- 实现简单,可有效地减小程序的维护工做量。
缺点
- 面向对象在面向过程的基础上高度抽象,从而和代码底层的直接交互很是少,从而不适合底层开发和游戏开发,甚至是多媒体开发;
- 复杂性,对于事务开发而言,事务自己是面向过程的,过分的封装致使事务自己的复杂性提升。
AOP(面向切面编程):一种编程思想
优势
- 简单,易用;
- 下降模块的耦合度;
- 使系统容易扩展;
- 设计决定的迟绑定:设计师能够推迟为未来的需求做决定;
- 更好的代码复用性。
缺点
- 增长额外重复代码,且紧耦合;
- 每一个业务逻辑须要一个装饰器实现或代理;
- 使用麻烦,须增长容器。
AOP的核心作用是:在程序运行期间,不修改代码的同时为程序增强功能。将必不可少的公共功能做成切面,随着程序运行切入到代码中运行。编写业务时只关注于核心功能 ,不再考虑事务、日志等公共功能,减轻了编码负担,更专注于业务。
AOP在实际项目中的应用
权限管理、表单验证、事务管理、信息过滤、拦截器、过滤器、页面转发、LOGO日志
3.接口幂等性
概念:接口幂等性就是用户对同一操作发起了一次或多次请求的对数据的影响是一致不变的,不会因为多次的请求而产生副作用。
查询操作:具有幂等性
删除操作:1. 绝对删除:具有幂等性
2.. 相对删除:不具有幂等性
更新操作:1. 绝对更新:具有幂等性
2.. 相对更新:不具有幂等性
新增操作:1.自增主键:没有幂等性
2.业务主键: 具有幂等性
4.索引的优缺点,使用场景
索引的优点:
1.加快查询或者检索的速度;
2.加快表关联的效率,在进行表关联时,可以对关联的字段建立索引;
3.使用分组或者排序的时候,可以减少分组或者排序的时间;
4.建立唯一索引,可以保证表中数据的唯一性等。
索引的缺点:
1.在数据分析或者开发或者中,创建索引和维护索引需要耗费大量的时间;
2.索引会占用物理空间,数据量越大,所用的空间也就越大;
3.索引会降低增删改的效率,因为每次增删改时都需要对索引进行动态维护等。
索引的使用场景,也就是什么我们应该去建立索引呢?可以对照索引的优点方面进行阐述:
1.主键建立唯一索引,创建表中指定某个列为主键列时,索引会自动创建;
2.频繁作为查询条件的字段建立索引;
3.排序时所用的字段建立索引;
4.分组时所用的字段建立索引;
5.常用于统计的字段建立索引等。
5.唯一索引, 主键索引,聚集索引,非聚集索引
唯一索引是不允许其中任何两行具有相同索引值的索引。
主键索引为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。
6.索引失效
1. 索引失效案例
MySQL中提高性能的一个最有效的方式是对数据表设计合理的索引。索引提供了访问高效数据的方法,并且加快查询的速度,因此索引对查询的速度有着至关重要的影响。
- 使用索引可以快速地定位表中的某条记录,从而提高数据库查询的速度,提高数据库的性能。
- 如果查询时没有使用索引,查询语句就会扫描表中的所有记录。在数据量大的情况下,这样查询的速度会很慢。
大多数情况下都(默认)采用B+树来构建索引。只是空间列类型的索引使用R-树,并且MEMORY表还支持hash索引。
其实,用不用索引,最终都是优化器说了算。优化器是基于什么的优化器?基于cost开销(CostBaseOptimizer),它不是基于规则(Rule-BasedOptimizer),也不是基于语义。怎么样开销小就怎么来。另外,SQL语句是否使用索引,跟数据库版本、数据量、数据选择度都有关系。
1.1 全值匹配我最爱
1.2 最佳左前缀法则
在MySQL建立联合索引时会遵守最佳左前缀匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。
结论:MySQL可以为多个字段创建索引,一个索引可以包括16个字段。对于多列索引,过滤条件要使用索引必须按照索引建立时的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用。如果查询条件中没有使用这些字段中第1个字段时,多列(或联合)索引不会被使用。
1.3 主键插入顺序
对于一个使用InnoDB存储引擎的表来说,在我们没有显示的创建索引时,表中的数据实际上都是存储在聚簇索引的叶子节点的。而记录又存储在数据页中的,数据页和记录又是按照记录主键值从小到大的顺序进行排序,所以如果我们插入的记录的主键值是依次增大的话,那我们每插满一个数据页就换到下一个数据页继续插,而如果我们插入的主键值忽小忽大的话,则可能会造成页面分裂和记录移位。
1.4 计算、函数、类型转换(自动或手动)导致索引失效
1.5 类型转换导致索引失效
1.6 范围条件右边的列索引失效
应用开发中范围查询,例如:金额查询,日期查询往往都是范围查询。应将查询条件放置where语句最后。(创建的联合索引中,务必把范围涉及到的字段写在最后)
1.7 不等于(!= 或者<>)索引失效
1.8 is null可以使用索引,is not null无法使用索引
结论:最好在设计数据表的时候就将字段设置为 NOT NULL 约束,比如你可以将INT类型的字段,默认值设置为0。将字符类型的默认值设置为空字符串('')
拓展:同理,在查询中使用not like也无法使用索引,导致全表扫描
1.9 like以通配符%开头索引失效
拓展:Alibaba《Java开发手册》
【强制】页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决。
1.10 OR 前后存在非索引的列,索引失效
在WHERE子句中,如果在OR前的条件列进行了索引,而在OR后的条件列没有进行索引,那么索引会失效。也就是说,OR前后的两个条件中的列都是索引时,查询中才使用索引。
1.11 数据库和表的字符集统一使用utf8mb4
统一使用utf8mb4( 5.5.3版本以上支持)兼容性更好,统一字符集可以避免由于字符集转换产生的乱码。不同的字符集进行比较前需要进行转换会造成索引失效。
7.div居中方法
1.绝对居中:首先给div添加绝对定位position: absolute;并设置上下左右边距为0,然后使用margin: auto;自动居中。
2.水平垂直居中:给其父元素添加display: flex;弹性布局。通过定义伸缩容器的两个属性,justify-content主轴方向,align-items纵轴方向均为center
3. (定位+变形)居中:给父元素添加 position: relative;相对定位。给自身元素添加position: absolute;绝对定位。top: 50%;使自身元素距离上方“父元素的50%高度”的高度。left: 50%;使自身元素距离上方“父元素的50%宽度”的宽度。transform: translate(-50%,-50%);使自身元素再往左,往上平移自身元素的50%宽度和高度。
8.微信支付设计逻辑考察
前置工作:
1.注册微信支付的商户号
2.小程序关联商户号
9.算法题初始[1,4,6,8,2,5,9,3,4]变为[[1,4,6,8],[2,5,9],[3,4]]//数组中元素后面遇到比前面小的就放进新数组
import java.util.ArrayList;
import java.util.List;/*** @author zhangy* @create 2022-10-12 22:37*/
public class test {public static void main(String[] args) {int[] ints = {1, 4, 6, 8, 2, 5, 9, 3, 1, 4 ,7};List<List<Integer>> lists = new ArrayList<>();List<Integer> list = new ArrayList<>();for (int i = 0; i < ints.length; i++) {if (i != ints.length - 1){if (ints[i] < ints[i + 1]){list.add(ints[i]);}if (ints[i] > ints[i + 1]){list.add(ints[i]);lists.add(list);list = new ArrayList<>();}}else {//最后一个的处理if (ints[i - 1] < ints[i]){list.add(ints[i]);}else {
// lists.add(list);list = new ArrayList<>();list.add(ints[i]);}}}lists.add(list);System.out.println(lists);}
}
凯捷Java二面问题总结相关推荐
- IT战略规划项目方法论(德勤 埃森哲 IBM 凯捷)
2015年参与了公司十三五的IT战略规划编制,当时并没有了解太多战略规划方法论,主要还是咨询公司主导.近期又参与到IT战略规划的修编,希望能做得更好一些,有所提升,所以仔细研究了下四大咨询公司IT战略 ...
- 两个offer:rovi和凯捷中国,不知道如何选择
最近找工作,有两个offer,不知道如何选择,请各位给个参考意见哈 rovi:做数字媒体的,号称全球最大的数字娱乐技术公司,拥有好几千项技术专利,最近TCL的数字电视新产品线采用了此公司的DivX技术 ...
- 鼎捷ERP二次开发教程 Tiptop GP开发资料大全 Tipto开发实战经验 鼎捷开发实战例子 Tiptop GP二次开发项目例子 4GL开发Demo 鼎捷二次开发完整例子 鼎捷ERP二次开发入门
本人在ERP实施公司做顾问四五年,参与企业实施ERP十多个项目,非常熟悉企业ERP流程,在实施过程遇到众多问题,提出了不少根据企业具体情况的解决方案. 曾经参与鼎捷Tiptop GP实施十多个项目,具 ...
- 【观察】凯捷携手微软:以智能车联网解决方案,构筑车企竞争力“护城河”...
过去几年,汽车行业迎来了百年未有的大变局,并在两个领域展开了深度"进化":一方面是电动化,它不仅改变了汽车传统的驱动模式,同时在国家"双碳"战略的推动之下,更加 ...
- 产业洞察丨AWS和凯捷:“老”朋友的“新”合作
中国软件网 报道 | 公众号:Hapiweb-soft6 对于欧洲区的凯捷和AWS来说,这是他们开展合作的第十好几年.凯捷已经是AWS合作伙伴网络(APN)指定的核心级咨询合作伙伴( Premier ...
- Atitit java 二维码识别 图片识别
Atitit java 二维码识别 图片识别 1.1. 解码1 1.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.1 1.3. 二维码的样例:2 1.4. 定位图案2 1. ...
- 730阵列卡支持多大硬盘_凯捷月销破2万,配6座头等舱空间,到底有多舒服?试驾了才知道...
能够在还未上市的前一个月,就以预售的方式卖出超过2万台,上汽通用五菱在乘用车市场之中的号召力可见一斑.过去我们都将五菱视为商务领域的铭牌,包括宏光.荣光.之光等等家族,都在各自细分市场占据着最顶端位置 ...
- java二维数组存储数据,从键盘上录入学生人数,考试科目数,以及每个学生每科分数,输出每个学生的最高分、最低分、总分、平均分
java二维数组存储数据,从键盘上录入学生人数,考试科目数,以及每个学生每科分数,输出每个学生的最高分.最低分.总分.平均分 import java.util.Scanner;/* * 二维数组存储数 ...
- java二维数组的遍历
java二维数组的遍历 /* * java二维数组的遍历 * 二维数组,数组座位数组元素类型的数组,数组的数组 * */ public class Test14 {public static void ...
最新文章
- pytorch 批量 iou
- 有关java的参考软件_Java的相关的排序实现(参考软件设计师教程)
- GitHub 2200+星的任正非语录下架了,我们找到了一份fork版
- Android 视频缩放/放大
- mysql 多表联合查询
- google hacking
- 深度学习与python运用论文心得
- Java2实用教程(第五版)/第五章例题
- requestSubscribeMessage:fail can only be invoked by user TAP gesture 微信小程序调起订阅消息失败
- 2020 前端必看 20个最好的前端Web开发工具
- 手把手带你免费打嘉立创pcb板
- Python 分类问题研究-Fisher线性判别
- Android实时监听短信并上传服务器
- 使用vue解决vs编辑器格式化分号逗号问题
- 一个非常实用的漂浮广告代码(强烈推荐)
- 什么是IO多路复用,理解IO多路复用
- 编译原理实验报告一:PL0语言编译器分析(PL0,词法分析,语法分析,中间代码生成)
- 活跃用户的测算方法与用户黏性指数的提出
- vue-orgchart拓扑图
- java lang ill_请MATLAB高手帮忙我的MATLAB老出现以下东西,这些东东还刷的挺快,不按ESC都不停止.java.lang.Ill...