Java基础部分(直说重点部分)
1、"=="和 equals 方法究竟有什么区别?
==如果判断值类型的话,判断内容是否相同。如果判断引用类型则是判断内存地址是否相同
2、静态变量和实例变量的区别?
静态变量使用时,通过类名.名称,实例变量必须要初始化后才能使用。实例变量是实例化后才会分配空间,而静态变量当类加载时会分配空间。
3、是否可以从一个 static 方法内部发出对非 static 方法的调用?
非static方法可以访问static方法.
static方法不能访问非static方法
4、Integer 与 int 的区别
Integer 是引用类型,默认值是null。而int是是值类型默认值是0
5、请说出作用域 public, private, protected,以及不写时的区别
这四个作用域的可见范围如下表所示。
说明:如果在修饰的元素上面没有写任何访问修饰符,则表示 friendly。
6、重载与重写区别?
重载是同一个类中,方法名称相同, 但是参数或个数不同。与返回值没有关系。
重写是在多个类中, 产生继承关系。父类与子类的方法方法必须相同。
7、接口与抽象类的区别?
区别:定义接口的关键字是:interface 而定义抽象类的关键字是:abstract。
接口中成员不能有私有, 抽象类可以。
接口中定义的成员, 是finl public static 类型, 抽象类没有。
接口中的不能有普通方法, 抽象类中可以。
相同:
两个都不new,但是 接口与抽象类是面向对象必备知识,设计模式、重构代码有必然作用
8、 final, finally, finalize 的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally 是异常处理语句结构的一部分,表示总是执行。
finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可
以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 JVM 不保证此方法总被
调用
9、Java的垃圾回收机制
Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。
System.gc()
Runtime.getRuntime().gc()
10、 反射的优缺点?
反射:就是正在运行动态读取这个类的完整信息。
优点:java的反射机制就是增加程序的灵活性、
缺点:缺点:(
(1)性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。因此反射机制主要应用在对灵活性和扩展性要求很高的系统框架上,普通程序不建议使用。
(2)使用反射会模糊程序内内部逻辑:程序员希望在源代码中看到程序的逻辑,反射等绕过了源代码的技术,因而会带来维护问题。反射代码比相应的直接代码更复杂。
11、那些地方用到了反射?
例如: jdbc、Java常用框架、jdk的动态代理、android的加载布局文件
12、java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承, 为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
字节流,字符流。字节流继承于 InputStream OutputStream,字符流继承于InputStreamReaderOutputStreamWriter。在 java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。
13、字节流与字符流的区别
字节流什么都存,字符流只能存放中文
其他部分
1、xml与json的区别?
不同:
xml是重量级、json是轻量级
xml比较占带宽、json占带宽小,易于压缩
json在webservice 用的比较少、xml用的较多
相同:
两者都用在项目交互下 例如 移动app接口用的就是json、在web项目中与其他项目对接用xml较多。
json常用解析方法 gson、jsonobject、jackson等 xml dom sax pull 解析
2、redis使用场景
redis是 缓存数据库,能够减轻数据库访问操作,比关系数据访问效率高! 使用场景: 发送短信验证码计时、token生成。
3、JavaWeb安全编程
1、xss攻击
什么恶意执行javascript代码或html代码 例如获取用户cookie、论坛恶意留言
4、sql注入
5 尽量少用隐藏域、或不要暴露敏感数据信息。
例如:很多网站忘记密码, 通过手机号码找回,前面是手机号码+图像验证码。点击下一步是讲上一个页面的手机号放到隐藏域中。发送验证码取隐藏域里面的值。这样我讲隐藏域里面的值修改自己的手机。就可以破解别人的账号密码
6、App接口设计一定要规范
最好项目更新时最好用 网站安全扫描工具扫描一下。return instance;