Java
1.Object方法equals()和hashcode()的联系
2.java中==和equals()的区别,equals方法没有被重写时,如何比较。
==比较的是内存地址
equals()被重写前默认使用==
3.a=a+b 和 a+=b 的区别
byte a=12;
byte b=12;
a=a+b;
a+=b;
或者
short a=12;
a=a+1;
a+=1;
4.表达式 3*0.1==3 结果是什么
5.int在32位系统和64位系统中长度是否相同,占多少位。
6.ArrayList和LinkedList的区别。
7.&和&&有什么区别。
8.集合与数组之间的转换
9.去除string中的重复内容
10.方法重载和重写的区别(或overload和override、java中的多态)
(1)方法重载【静态多态】:发生在同一个类中,方法名必须相同,参数类型、个数、顺序不同,与返回值类型。访问修饰符无关,发生在编译时。
(2)方法重写【动态多态】:
a、发生在父子类中,方法名、参数列表必须相同
b、返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;
c、以下不能被重写:private、final、static、构造方法
d、抽象方法必须被重写,否则类就会变为抽象类
e、父类引用指向子类对象,只能调用父类中定义的方法或被字类重写的方法
(3)注意
a、所有方法都可以被重载(包括抽象方法、构造方法等)
b、方法签名:方法声明的两个组件构成了方法签名 - 方法的名称和参数类型。
11.java中创建对象的方式有哪些
(1)通过new语句实例化一个对象
1-使用Class对象的newInstance()方法来创建对象
2-通过Constructor类的newInstance()方法获取
(2)通过反射机制动态创建对象
(3)通过clone()创建对象
(4)通过反序列化的方式创建对象
1-对象需要继承Serializable接口
2-Map、HashMap没有实现序列化,所以不能在网络间直接传递,必须需要一个序列化后的java类进行包装后,才能传递。
3-禁止序列化修饰符transient
12.final、finally和finalize的区别
(1)finally在return之前执行。System.exit(0);finally不执行。
(3)finalize是Object的方法,表示在jvm进行垃圾回收时用于释放资源,析构函数。
(4)析构函数(destructor)与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统会执行析构函数。在java中,我们一般用不到它,因为 java 有自动内存回收机制,无须程序员手动释放。java 对象析构时会调用 finalize() 方法。
13.在继承关系中,构建字类对象的执行顺序
① 父类的静态代码块
② 子类的静态代码块
③ 父类的非静态代码块
④ 父类的无参构造方法
⑤ 子类的非静态代码块
⑥ 子类的无参构造方法
⑦ 子类被调用的重写父类的方法
14.写出你知道的运行时异常(不少于三个)
ArithmeticException - 算术运算中,被0除或模除
ArrayIndexOutOfBoundsException - 数组越界访问
IllegalArgumentException - 方法的参数无效
NullPointerException - 空指针异常
NoClassDefFoundException - JAVA运行时系统找不到所引用的类
15.java提供了两种异常机制。一种是运行时异常(RuntimeExepction),一种是检查式异常(checked execption)。
(1)检查式异常:我们经常遇到的IO异常及sql异常就属于检查式异常。对于这种异常,java编译器要求我们必须对出现的这些异常进行catch 所以 面对这种异常不管我们是否愿意,只能自己去写一堆catch来捕捉这些异常。
(2)运行时异常:我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。
16.throw 和 throws 的区别?
throw表示方法内抛出某种异常对象
throws表示方法头抛出异常对象
17.抽象类和接口的区别
(1)相同点
①接口和抽象类都不能实例化
②都位于继承的顶端,用于被其他实现或继承
③都包含抽象方法,其子类都必须覆写这些抽象方法
(2)不同点
①抽象类使用abstract关键字声明,接口使用interface关键字声明
②子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现
③子类使用implements关键字来实现接口。它需要提供接口中所有声明的方法的实现
④抽象类可以有构造器,接口不能有构造器
⑤抽象类中的方法可以是任意访问修饰符,接口方法默认修饰符是public。并且不允许定义为 private 或者 protected
⑥一个类最多只能继承一个抽象类,一个类可以实现多个接口
⑦抽象类的字段声明可以是任意的,接口的字段默认都是 static 和 final 的
18.jdk和jre
(1)jdk
①提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。
②所以安装了JDK,就无需再单独安装JRE了。
③其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等
④jdk又称sdk【软件开发工具包】
(2)jre
①包括Java虚拟机和Java程序所需的核心类库
②核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等.
(3)JVM
①Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。
19.如何遍历Map集合
(1)方法一:通过Map.keySet,遍历key和value
(2)方法二:通过Map.values(),遍历所有的value,但不能遍历key
(3)方法三:通过Map.entrySet,遍历key和value
(4)方法四:通过Map.entrySet,使用iterator遍历key和value
20.round(12.5),floor(12.5).ceil(12.1)的结果
(1)floor返回的是小于或等于该数值的最大的整数 12
(2)ceil返回的是大于或等于该值的最小的整数 13,一般用于分页
(3)round四舍五入,不再多说(加0.5向下取整) 13
21.普通类和抽象类的区别
(1)普通类不能包含抽象方法,抽象类可以包含抽象方法。
(2)抽象类不能直接实例化,普通类可以直接实例化。
(3) final 不能修饰抽象类
22.OOP和OOM
算法
二分法:
二分法查找(Binary Search)也称折半查找
冒泡排序:
对数组中相邻的数据,依次进行比较;
如果前面的数据大于后面的数据,则把前面的数据交换到后面。经过一轮比较之后,就能把数组中最大的数据排到数组的最后面了;
再用同样的方法,把剩下的数据逐个进行比较排序,最后得到就是从小到大排序好的数据。
选择排序:
选择排序(Selection Sort)算法也是比较简单的排序算法,其实现思路是每一轮循环找到最小的值,依次排到数组的最前面,这样就实现了数组的有序排列。
mysql
1.数据库中如何查询列中的值是否带有小数点
select * from 表名 where userscore<ceil(userscore)
select * from 表名 where userscore>floor(userscore)
select * from 表名 where ceil(userscore)<>ceil(userscore)
2.表中的重复数据仅保留一条,删除多余的数据
3.sql语句的执行顺序
4.char、varchar、text的区别
CHAR是一种固定长度的类型,适合用在身份证号码、手机号码等定长。
VARCHAR则是一种可变长度的类型,适合用在长度可变的属性。
text不设置长度, 当不知道属性的最大长度时,适合用text。
5.mysql创建小数的字段
`buyHuaXiao` decimal(10,4) NOT NULL COMMENT '花销'
6.
注册驱动
Class.forName("com.mysql.jdbc.Driver");显示的加载到JVM中
获取连接
Connection conn=DriverManager.getConnection(url,user,pass);
创建一个Statement语句对象
执行SQL语句
处理结果集
关闭资源
javaweb
1.jsp的九大内置对象
(1)request
(2)response
(3)out
(4)session
(5)spplication
(6)pageContext
(7)config
(8)page
(9)exception
2.jsp的生命周期
(1)翻译(转义):把jsp文件访问为java源码
(2)编译:把java源码编译为字节码
(3)执行:servlet的生命周期
3.servlet生命周期执行过程
客户端访问url----服务器根据url匹配对应servlet----使用java的反射机制构建servlet对象----调用构造方法---调用init方法进行初始化----service----根据请求的方法--goGet\doPost----长时间无人访问----destroy----servlet被销毁。
4.会话跟踪
(1)解决http这种无状态协议的弊端
(2)技术:
-1、cookie:服务器写在客户端的小文本,只能存放简单数据,一个域名只能写一个cookie文件,可以包含255个数据,以键值对的方式存放
-2、hidden:隐藏域
<input type="hidden" name="" value=""/>
-3、url重写,url传参再url后通过?进行参数传递。
-4、用户授权,使用session存数据。
5.请求和转发的区别
转发是服务器行为,重定向是客户端行为
转发过程:
(1)客户浏览器发送http请求----》web服务器接受此请求--》调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源发送给客户;
(2)在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。
(3)转发行为是浏览器只做了一次访问请求。
重定向:
(1)其实是两次request, 第一次,客户端request A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。
(2)重定向可以访问自己web应用以外的资源。
(3)在重定向的过程中,传输的信息会被丢失。
6.cookie和session的区别
共同点:cookie和session都是用来跟踪浏览器用户身份的会话方式。
区别:
(1)cookie数据保存在客户端,session数据保存在服务端。
(2)cookie不能跨浏览器,session能够跨浏览器
7.mvc
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写
8.浏览器关闭,session丢失原因:
session使用通过Cookie来存放id的,而临时cookie在浏览器关闭后,会丢失,放在其中的JSSESSION也会消失
9.TCP/UDP的区别
(1)TCP 是面向连接的,UDP 是面向无连接的
(2)TCP 是面向字节流的,UDP 是基于数据报的
(3)TCP 保证数据正确性,UDP 可能丢包
(4)TCP 保证数据顺序,UDP 不保证
10.Get和Post的区别
(1)Get会把数据放在url中,不安全。post的数据放在请求数据包的消息体中。
(2)Get传输的数据量小,主要是因为它受约于URL长度的限制,而Post可以传输大量的数据,所以我们在传文件的时候会用Post。
(3)Get是从服务器上获得数据,而Post则是向服务器传递数据的。
11.Get和Post的请求过程
post请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回100 Continue响应
(5)浏览器发送数据
(6)服务器返回200 OK响应
get请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回200 OK响应
12.java三大组件:servlet、过滤器、监听器。
过滤器:Filter,监视、修改或以某种方式处理正在客户端和服务器之间交换的数据流
监听器: 通过实现Listener接口的类可以在特定事件(Event)发生时,自动激发一些操作
1.ssm加restful风格
2.IOC
3.ID
4.AOP