java面试题答案总结整理

不定时更新

----------------------------------------------------2019.4.4----------------------------------------------------------

1.java内部类与外部类:
1>.非静态内部类与外部类:
隐式含有外部类所有变量与方法;外部类调用内部类的时候:外部类实例.new 内部类();
2>.静态内部类与外部类:
只能调用外部类的静态变量和方法;外部类调用内部类时:new 内部类();
2.String s = new String(“xyz”);:
两个对象,三个存储区:静态区(“xyz”),堆(new出的对象),栈(s)
3.一个".java"可以有多个类,但只有一个public类,且与文件名字相同
4.匿名内部类可以继承其他类与接口,在Swing编程和Android开发中常用到此方式实现事件监听和回调
5.final关键字:
修饰类:不可被继承
修饰方法:不可重写,但可以重载
修饰变量:是常量,不能被修改
6.重载和重写:
重载:一个类的多个方法名字相同,但是参数不同。注意:返回类型不能判断,即可以改变返回类型
重载,因为在编译时,jvm无法知道方法的返回类型。
重写:子类继承父类的方法,并重写了一个完全一样的方法。
7.实现对象克隆:
实现Cloneable接口并重写Object类的clone()方法
实现Serializable接口,通过对象的序列化和反序列化实现真正意义上的克隆
8.静态方法只能访问静态成员,非静态方法可以访问所有成员
9.抽象方法不可以是以下情况:
静态方法:抽象方法需要重写,而静态方法不能被重写
本地方法:(有本地代码实现的,如c语言实现的),抽象方法没有实现
synchronized:和方法的实现细节有光,抽象方法不涉及细节
10.内存泄漏:任何对象在不被需要的时候依旧存在
闭包(能够读取其他函数内部变量的函数,可以理解为定义在一个函数中的内部函数)、控制台日志、setTime(一个参数为字符串)、循环(两个对象彼此音乐且彼此保留)
11.null和undefind区别:
null:没有对象,没有值
undefind:有对象,有值,但是值没有定义
12.== 和 === 区别:
==:先比较类型,然后转换,在比较值
===:比较类型,如果不同直接false
13.jqery:
html():html标签及内容
text():纯文本内容,不能用于表单元素
val():用于表单元素
14.Jquery选择器:
基本选择器:根据id、css类名返回匹配dom元素
层次选择器:路径选择器
过滤选择器:在前面的基础上过滤相关条件,得到dom
15.jsp和servlet:
jsp:本质上是servlet,注重前端页面,是java+html
servlet:注重后台逻辑
16.垃圾回收机制:分代复制垃圾回收、标记垃圾回收、增量垃圾回收
17.cgi与servlet:servlet通过多线程方式运行服务,一个实例可以服务多个请求,实力一般不会销毁,效率高
18.重定向和请求:
sendRedirect():效率慢,可以访问不同站点的,url会变,发出新的请求
forward():url不变,效率高。
19.http请求:状态码、http头部、主体
20.http隧道:利用http或者https把多种网络协议封装起来进行通信的技术
21.servlet生命周期:加载和实例化、初始化(只调用一次)、服务、销毁
22.callableStatement:用来执行存储过程(用来执行特定功能的一组sql语句),存储过程提供了安全化和模块化
23.PreparedStatement比Statement的优势:预编译的,性能好,可以重用,安全,减少编译错误。
24.throw和throws区别:
throw:在代码中明确抛出异常(不受检查的异常、运行时异常(编译时被忽略))
throws:声明受检查的异常
25.HashSet和TreeSet区别:
HashSet:用hash表实现,无序,时间复杂度为O(1)
TreeSet:用树形的结构来实现的,元素有序,时间复杂度为O(logn)
26.HashMap和Hashtable区别:
map允许键和值为空,且不是同步的,更适合单线程环境,使用iterator(迭代器)。table不允许键和值为空,是同步的,适合多线程环境,使用Enumeration(对键的列举),一般认为其是遗留的类。
27.iterator和Enumeration区别:
Enumeration速度是iterator的2倍,占用更少的内存,但是不安全,能再遍历的时候修改集合,不允许调用者删除底层集合里面的元素。
28.java面向对象特性:封装、继承、多态、抽象
29.finally在return之前执行,即使return实在try中
30.&和&&区别:
&:是位运算符,表示按位与运算
&&:是逻辑运算符,表示and,短路与(左边false,右边直接舍去)
31.Collection与Collections区别:
Collection:是集合类的上级接口
Collections:是针对集合类的一个帮助类,提供最集合的各种操作
32.数组没有length()方法,但是有length属性,String有length()方法。
33.1B(byte,字节)=8b(bit)=0.5汉字,java中使用的是Unicode
34.jvm加载class文件
35.StringBuffer是多线程、效率低,StringBuilder是单线程、效率高,String是只读字符串
36.值传递:传递的是值,引用传递:传递的是引用,不是值
37.String类不能被继承只能是关联或者依赖
38.x.equals(y)为true,则hashcode是一样的,hashcode一样,不一定相等
39.构造器不能被继承,也即使不能重写,但是可以重载
40.跳出多重循环:在最外层循环前加上标记A,然后break A;
41.最有效率的方法计算28:2<<3(左移3位等于2的3次方,右移是除):二进制计算
42.switch可以作用于除了long型数据
43.java的指针是对象引用
44.基本类型(8),枚举类型,引用类型
45.short s1=1;s1=s1+1:需要强制转换;s1+=1:不需要强制转换
46.goto是保留字
47.原始数据类型与包装类型
包装类型:Integer的值是-128到127之间,注意它的大小判断是否重新new一个对象
48.栈(stack,基本数据类型的变量,对象的引用,甚至小的对象(逃逸分析))堆(heap,(new、构造器)对象放在堆中)静态区(字面量,如"hello"、“100”、100或者常量)
49.四舍五入原理是在参数上加0.5然后向下取整。

--------------------------------------------------2019.4.10-----------------------------------------------------------

50.创建对象时构造器的调用顺序:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。也就是说:相同情况下,父类先执行,然后子类执行;静态先执行,非静态后执行。例如:调用顺序:父类静态变量,子类静态变量,父类构造方法,子类构造方法。
51.字符串和基本静态类型转换,除了基本的方法(Integer.parseInt和int+“”)之外,还有valueOf方法(Integer.valueOf(“”))。
52.实现字符串的反转和替换: 1>.字符串与数组遍历 2>.Stringbuffer或者Stringbuild方法 3>.递归
53.时间:java8:time包下:LocalDate和LocalTime等,有DateTimeFormat时间格式转换器 之前:Date,SimpleDateFormat时间格式转换器
54.java和JavaScript:一个是动态语言、强类型变量(即变量须声明)、必须编译、面向对象 另一个是静态语言、弱类型变量、解释性语言不需要编译,由浏览器直接解析、基于对象和事件驱动。
55.断言(assert):assert Expression1;或者assert Expression1:Expression2;后面的E是boolean型。下面是boolean:错误信息如果为false,就报错(AssertionError)。
56.Error和Exception区别:前者是系统级错误和程序不必处理(处理不了)的异常,后者是需要捕捉或者需要程序进行处理的异常,是设计的问题,表示程序正常运行不会发生这种情况。
57.递归要牢记两点:收敛条件以及递归公式(按照顺序来)。
58.异常表示在程序运行时出现的不正常状态。
59.里氏代换原则:能使用父类型的地方一定能使用子类型,子类的功能一定比父类多。
60.异常的抛出与捕获:子类异常抛出,父类能捕获,父类抛出的异常,子类捕获不了,但要注意典型问题的关键:父类捕获的异常的本质是子类,再抛出异常即可被子类捕获,这是java的多态性。
61.Comparable和Comparator区别:前者是排序接口,后者是比较接口。实现了排序接口,即可使用Arrays.sort以及Collections.sort方法。也可以用后者实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值