1.多态是面向对象程序设计的一个重要特征,即同一引用在不同情况下的多种状态;可以理解成多态是一个接口,使用不同实例会执行不同的操作
2.我知道的集合有以下几种:
List,set和map; list元素是一个一个添加的,有序,可重复(linkedlist,arraylist) set集合中元素是一个一个添加的,无序,不重复(hashset,treeset) map中的元素是一个一个的键值对,key不可以重复,value可以重复(hashmap,treemap) ArrayList和List是一个实现与被实现的关系。list是ArrayList的接口,ArrayList是list的一个实现类
3.接口和抽象类类的异同
两者都不可以实例化对象,
两者的实现类或子类中都必须重写接口或抽象类中的抽象方法;
都为大型项目提供约束;
为多态的实现提供基础
不同之处:
抽象类的子类需要用extends继承抽象类,实现类需要用implements实现接口;
抽象类的子类中只需重写抽象类的抽象方法,接口中的实现类必须重写接口的所有方法;
子类与抽象类是继承关系,实现类与接口是实现关系;
抽象类是单继承的,接口间可以实现多继承;
修饰符;
抽象类有构造方法,接口没有;
4.单例模式:通过单例模式创建的类在当前进程中只有一个实例
5.数组的排序函数:
sort()数组中的元素由低到高排序 rsort(),
asort()索引,arsort(),
ksort()键名,krsort()
6.public和private修饰词的区别
public表示任何类的任何方法都可以访问 private表示只有本类可以访问 默认表示可以被同包下的类访问 protected表示被同包下的类和不同包下的子类访问
1.基本数据类型:int long short string double float char byte
2.值传递和引用传递:(值函数)在调用函数时,将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,不会影响到实际参数 (引用函数)是指在调用函数时将实际参数的地址传递到函数中,如果在函数中对参数进行修改,就会影响到实际参数
3.遍历都有那些方法:普通for循环,加强for循环遍历,迭代器遍历
4.迭代器遍历过程不能增改删查,否则抛异常
5.equals和hash的区别 equals()相等的两个对象hashocde一定相等 hashcode相等的两个对象,他们的eqauls()也就是hashcode不一定是可靠的
6.string,stringbuffer、stringbuilder的区别 string类是final类不能被继承,是一个字符串常量,每次字符串的变化,都相当于创建一个对象,浪费内存
stringbuffer是字符串变量,字符串变化,不需要创建对象,线程安全
stringbuilder是字符串变量,字符串变化,不需要创建对象对象,线程不安全
7.多线程有2种实现方式:一种是实现runable接口,一种是extends Threads类
实现Runnable接口比继承Thread类所具有的优势:
1.适合多个相同的程序代码的线程去共享同一个资源。
-
可以避免java中的单继承的局限性。
-
增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立。
- 线程池只能放入实现Runable或Callable类的线程,不能直接放入继承Thread的类的线程。
-
开启线程的唯一方法就是通过Thread的start()方法,run只是一个方法体
坦克大战,多个坦克同时发射炮弹
8.java的反射作用:
在运行时判断任意一个对象所属的类。
-
在运行时构造任意一个类的对象。
-
在运行时判断任意一个类所具有的成员变量和方法。
-
在运行时调用任意一个对象的方法。
9.sleep和wait区别? sleep是线程方法,wait是object方法
sleep不释放锁,wait释放锁
sleep不依赖同步方法,wait依赖
sleep不需要被唤醒,wait需要
10.注解作用 用来充当注释 用作代码的验证(@override) 携带信息
11.http和https的区别 http是超文本传输协议,信息是明文传输, https则具安全性的ssl/tls加密传输协议。
12.内存溢出,内存泄漏: 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存泄露。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间。
13.jsp和servlet
jsp经编译后就变成了Servlet.
jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.
14.静态导入和动态导入 <%--静态导入 include指令 --%> <%@include file="head.jsp"%>
动态导入 <jsp: include file="head.jsp">
<%--动态导入
它会单独将导入的jsp文件:单独进行翻译和编译
比较占用内存空间
--%>
<%--<jsp:include page=""--%>
15.jsp四大作用域:appplication,session,request,page
16.请求转发和重定向:
√转发在服务器端完成的;重定向是在客户端完成的
转发的速度快;重定向速度慢
√转发的是同一次请求;重定向是两次不同请求
转发不会执行转发后的代码;重定向会执行重定向之后的代码
√转发地址栏没有变化;重定向地址栏有变化
转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成
17.Cookie与session的区别? 存储的位置不同:cookie数据保存在客户端,session数据保存在服务器端。
存储的数据类型不同(key-string,key-object)
存储的数据大小限制不同(4k 内存)
生命周期的控制(生命周期累计,生命周期间隔)
18.进行表单提交,后台如何获取表单提交的value值呢?
<name标签>request.getParameters("name值")
form文件上传注意事项? 1、method一定要是post 2、enctype默认是传不了文件的,要把它改成form-data,才能传文件
19.如何避免表单重复提交
20.spring
spring是一种轻量级j2EE框架,提供一种新的机制管理业务对象及依赖关系,是一种容器框架用来管理bean,维护bean的关系 轻量级,非侵入式,容器
IOC,动态注入,使用反射原理,不再new对象,和xml配置文件动态创建对象和调用方法 Aop,面向切面编程,可以对某一个类进行监督和控制,从而达到对一个模块的功能扩充,比如日志的记录,权限的检查等
21.拦截器和过滤器
拦截器和过滤器其实都是AOP编程思想的实现
都可以体现例如权限的检查,日志的记录等功能
但是有不同之处: 1、使用范围不同 拦截器既可以用在web层又可以用在Application:和Swing程序中 而filter是Servlet规定的只能用于web程序中
2、规范不同 拦截器是在Spring容器中,是Spring框架支持的 而filter是Servlet规范规定的,是Servlet容器支持的
22.Get和post区别。
√本质区别:GET是从服务器上获得数据;POST是向服务器传递数据
1.url可见性(参数可见 参数不可见)
2.数据传输(拼接url传参,body体传参)
3.缓存性(get支持 post不支持)
4.后退页面反应(get不影响 post重新提交)
5.传输数据大小(get传输大小不超过2-4k,post传输数据可以无限大)
6.数据包(get产生一个tcp包,post产生2个tcp包)
7.安全性:原则上post肯定要比get安全,毕竟传输参数时url不可见
xml解析方式:xml解析方式有四种:DOM解析、SAX解析、DOM4J解析、JDOM解析。
24.数据库事务和隔离级别
原子性,(事务包含的所有操作要么全部成功,要么全部回滚),
一致性,(事务执行前后都必须处于一个一致性状态)
隔离性,(并发事务之间要相互隔离)
持久性;(事务一旦提交,数据库数据永久改变) 脏读,不可重复读,幻读
25.jdbc连接数据库 1、加载jdbc驱动程序;2、创建数据库的连接;3、创建preparedStatement;4、执行SQL语句;5、遍历结果集;6、处理异常,关闭JDBC对象资源。
26.数据库如何处理多对多多表关联
1.数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。
2.通过表的关系,来帮助我们怎样建表,建几张表。
27.简单的sql语句说出一个 select * from users where name=“zhang”
28.索引作用,优缺点 索引就是一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中的目录,不需要查询整本书内容就可以找到想要的内容。索引可以是唯一的,创建索引允许指定单个列或者多个列。但是它减慢了数据录入的速度。同事也增加了数据库的尺寸大小。
29.数据库的存储过程? 存储过程是一些sql语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序通过存储过程名字调用,也可以从另一个存储过程或触发器调用。
30.ajax跨域请求
代理实现最麻烦,但使用最广泛,任何支持AJAX的浏览器都可以使用这种方式。 JSONP相对简单,但只支持GET方式调用。 XHR2最简单,但只支持HTML5,如果你是移动端开发,可以选择使用XHR2。
31.分页查询怎么实现? limit pageNum-1,pageSize
32.linux常见命令 cd mkdir rm -rf -ls pwd ip addr
33.CSS与JS选择器有哪些?
css5种:类选择器,元素选择器,id选择器,属性选择器,派生选择器
js6种:getElementById()、getElementsByName()、getElementsByTagName()、getElementsByClassName()、querySelector()、querySelectorAll()
34.如何用js判断一个字符串? if (typeof myVar =="string") { alert("I'm a string!"); }
35.Redis属于No-sql数据库类似于MongoDB,是一个完全开源免费的一个高性能的key-value数据库。它是基于内存的数据库,是一种非关系型数据库,不同于mysql,sqlserver,Oracle他们都是存放在硬盘的,读写速度快
36.junit实操 ①将Unit的jar包导入到项目中
② 编写测试方法:该测试方法必须是公共的无参数无返回值的非静态方法。 ③ 在测试方法上使用**@Test注解:标注该方法是一个测试方法 ④ 在测试方法中完成被测试方法的预期正确性测试**。(断言)
⑤ 选中测试方法,选择“jUnit运行”,如果测试良好则是绿色;如果测试失败,则是红色
37.maven作用? 导jar包,热部署热编译,寻找依赖并下载