面试
一.海康威视笔试
1.Mysql
-
主键重新从1开始的指令:truncate [table]
表名
-
数据库的连接方式:
1、内连接(inner join)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。
2、外连接分为左外连接(left out join或left join)、右外连接(right out join或right join)和全外连接(full out join或full join)三种。
3、交叉连接:返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
2.算法
- 冒泡法的时间复杂度(O(n^2))
- 单链表法添加和删除头结点、尾节点的时间复杂度为O(1),查找操作以及向链表中间位置插入节点的时间复杂度则为O(n)-----需要遍历。
3.MVC
-
MVC(Model View Controller)是软件工程中的一种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
MVC每层之间的逻辑关系:
M:Model,模型。 JavaBean
完成具体的业务操作,如:查询数据库,封装对象
V:view视图。JSP、HTML等来进行数据展示C:Controller控制器。 Servlet
获取View的请求
调用模型将数据交给视图进行展示
4.线程
终止/停止线程的方法
- 使用标志位退出线程:定义一个boolean型的标志位,在线程的run方法中根据这个标志位是true还是false来判断是否退出
- 使用stop方法强制终止线程:stop方法是很危险的,就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结果,因此,并不推荐使用stop方法来终止线程。
- 使用interrupt方法终止线程
- (1)线程处于阻塞状态,如使用了sleep方法(处于暂停线程的状态)。
- (2)使用while(!isInterrupted()){……}来判断线程是否被中断。
在第一种情况下使用interrupt方法,sleep方法将抛出一个InterruptedException例外,而在第二种情况下线程将直接退出。
5.java基础
-
接口和抽象类的区别
-
1.默认的实现方法:
(1)抽象类可以有默认的方法实现,但也可以有不能有方法实现的抽象方法。- 抽象类中可以有已经实现了的方法,也可以有被abstract修饰的方法(抽象方法)
- 如果存在一个类存在抽象方法,那么该类必须是抽象类。
(2)接口根本不存在方法的实现。
- 但是接口要求只能包含抽象方法,抽象方法是指没有实现的方法。接口就根本不能存在方法的实现。
2.子类使用的关键词不一样:
(1)实现抽象类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。抽象类虽然不能实例化来使用,但是可以被继承,让子类来具体实现父类的所有抽象方法。但是如果子类将抽象方法没有全部实现,就必须把自己也修饰成抽象类,交于继承它的子类来完成实现。以此类推,直到没有抽象函数。
(2)子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现。
接口的实现,通过implements关键字。实现该接口的类,必须把接口中的所有方法给实现。不能再推给下一代。
3.是否有构造器:
(1)抽象类可以有构造器抽象类是属于类,享有类的所有特性(但是不能实例化),当然包括类的构造方法,也就是构造器。
(2)接口不能有构造器
接口是所有抽象方法的集合,注意,是集合,不是类。当然没有构造方法一说,更别提什么构造器了。
4.可使用的修饰符:
(1)抽象方法可以有public、protected和default这些修饰符抽象类的目的就是被继承,抽象方法就是为了被重写,所以肯定不能用private修饰符,肯定是可以用public的。但是protected和default也是可以的。
(2)接口方法默认修饰符是public。你不可以使用其它修饰符。
接口就有且只有一个public修饰。接口的方法隐藏了“public abstract”,所以接口的方法是抽象方法
接口的属性都隐藏了“public static final”,所以接口的属性都是常量
-
5.增加新方法对子类的影响:
(1)如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。
抽象类可以有一些非抽象方法的存在,这些方法被称为默认实现。如果添加一个默认实现方法(不能是抽象方法),就不需要在子类中去实现,所以继承这个抽象类的子类无须改动。
如果你往接口中添加方法,那么你必须改变实现该接口的类。
(2)接口中只能添加抽象方法,当你添加了抽象方法,实现该接口的类就必须实现这个新添加的方法。
因为,定义中说的很清楚,接口的实现必须实现所有的方法。所有,当然包括新添加的方法。
**6.子类能继承的数量:**
- java中抽象类只有单继承,接口就可以实现多继承。
- 一个类只能继承一个父类,但是能实现多个接口
6.HTTPS
- cookie
- 会话秘钥
7.代码实现一个简单的工厂模式
- 就是建立一个工厂类,对实现了同一接口的或者是存在继承关系的一些类进行实例的创建!!!
二.京东笔试
1.变量
- 访问控制修饰符Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。
- 默认的,也称为default,在同一包内可见,不使用任何修饰符
2.抽象类和接口
见上!!!!!!!
3.反射
-
获取反射的方式:
1.通过new对象实现反射机制
2.通过路径实现反射机制
3.通过类名实现反射机制
//方式一(通过建立对象)
Student stu = new Student();
Class classobj1 = stu.getClass();
System.out.println(classobj1.getName());
//方式二(所在通过路径-相对路径)
Class classobj2 = Class.forName("fanshe.Student");
System.out.println(classobj2.getName());
//方式三(通过类名)
Class classobj3 = Student.class;
System.out.println(classobj3.getName());
4.异常
5.JVM
-
常见的类加载器有
[:
-
垃圾回收自动调用的方法是:finalize()
6.mysql
- 索引失效的情况!!!!