java 基础笔试题
来源:互联网 发布:黑石集团知乎 编辑:程序博客网 时间:2024/04/27 15:58
Java基础
1、java与C 的区别?
JAVA和C++都是面向对象的语言,C是面向过程的。
java里没有指针,C++里有指针。
java是单继承,但允许一个类实现多个接口,弥补了java的单继承,而C++是支持多继承的。
java有自动回收内存的垃圾回收机制,不需要程序员手动释放内存,而C++是需要程序员手动释放内存的。
2、java面向对象的基本特征?
抽象:便于一个普遍的事物演化出同类的其他事物,而设计的一种特殊类型,方便对象上传、接口调用。
封装:将数据和一些复杂的处理过程封装起来,不希望别人直接访问,而是通过你提供的方法等来访问。
继承:所谓的继承是使子类拥有父类所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的
多态:所谓多态就是指方法的重载或者重写。当父类的引用指向子类的实例的时候,该引用只能调用父类的属性和方法,如果子类重写了父类的方法,那么将会调用子类的重写后的方法,如果子类扩展了一些父类没有的方法,想要调用这些方法,不能用父类的引用去调用,只能new一个子类的对象,来访问自己扩展的方法。
3、方法的重载和重写?
重写:必须是子类继承父类,才可以重写父类的方法,方法名和参数必须和父类一样,方法体里的内容不一样,返回类型权限要比父类更宽松。
重载:不需要有继承的关系,方法名必须相同,参数必须不同,返回类型可以相同,也可以不同。
4、java 访问权限?
public:公有的,所有的类都可以访问。
private:私有的,只有当前类能够访问。
protect:受保护的,只有同一个包内,或者他的子类能够访问。
默认的:包内友好的,只有同一包内才能够访问。
5、java基本类型和引用类型?
int 4字节 Integer
char 2字节 Character
byte 1字节 Byte
short 2字节 Short
float 4字节 Float
double 8字节 Dobule
long 8字节 Long
boolean Boolean
6、String是基本数据类型吗?
string是引用类型。
7、String和StringBuffer的区别?
StringBuffer在定义字符串的时候,在字符串池里只定义了一个同名的字符串,如果要改变字符串,则在这个基础上改变。而String,要改变的时候,会在定义一个新的串,这样原来的串就成了垃圾。所以,能用StringBuffer尽量不用String。
8、说出常用的类、包、接口?
类:String、ArrayList、StringBuffer、FileInputStream、HashMap
包:java.util 、 java.lang、java.sql、java.io 、java.swt
接口:List、Set、Map、Runnable、comparable
9、运行时异常和一般异常区别?
运行时异常没法捕获,一般异常可以写try。。catch来捕获。
java.lang.Throwable
java.lang.Exception
java.lang.RunntimeException
java.lang.Error
java.lang.ThreadDeath
Throwable 是java中所有异常或错误的超类
Exception 表示本身可以通过程序处理的类
Error 靠程序本身无法恢复的严重错误
RunntimeException 这种异常可以通过改进代码来避免
ThreadDeath 调用Thread 类中带有零参数的 stop 方法时,受害线程将抛出一个 ThreadDeath 实例。
10、Jsp内置对象及其方法?
request、response、session、application、out、exception、page、pagecontext、config
request.setAttribute() request.getAttribute() out.print() response.sendRedirect()等
11、jsp和servlet的区别和联系?
jsp和servlet本质没有区别,因为jsp运行前会被编译成servlet
jsp主要用于表现层,servlet主要用于业务逻辑的处理。
12、Jsp包含三个编译指令和七个动作指令。
三个编译指令为:page、include、taglib。
七个动作指令为:jsp:forward、jsp:param、jsp:include、jsp:plugin、jsp:useBean、jsp:setProperty、jsp:getProperty。
13、include和jsp:include的区别?include:是把引入的文件和当前的文件共同合并成一个servlet文件进行解析。
jsp:include:是把当前文件和引入文件生成两个不同的servlet文件,在当前文件中在进行动态的调用引入的servlet文件。
14、servlet生命周期?
Servlet在第一次访问服务器的时候加载,创建对象,即init,只初始化一次,然后根据请求,重写service方法,当关闭服务器或退出虚拟机的时候,对象销毁,即destroy。
15、两种跳转方式是什么,有什么区别?
一种是转发,一种是重定向
转发是服务器内部跳转,请求一次服务器,URL地址不变,request作用域里的只还存在
重定向是在向浏览器请求一次,相当于请求2此服务器,URL地址会改变,request里的值没有了
16、final、finally、finalize的区别
final:final修饰的属性不能改变、修饰的方法不能重写、修饰的类不能继承
finally:是异常处理时用的,try..catch..finally,finally一定会执行,如果有return,那么执行完finally再执行return
finalize:是垃圾回收前一定会执行的方法,用来释放一些资源。
17、hashmap和hashtable的区别
hashmap是非线程安全的,允许key和value为空
hashtable是线程安全的,不允许key和value为空
所以在不考虑线程安全下,hashmap效率更高一些。
18、sleep()和wait()区别?
sleep:是Thread的静态方法,可以放在任何地方,sleep期间不释放系统资源,不释放锁,其他线程无法访问。sleep一段时间后,自动恢复运行。
wait:是Object的方法,只能放在同步代码块里,wait期间会释放锁,其他线程可以访问。wait后,必须由notify来唤醒。
19、Set和List的区别?
set和list都是接口,都继承子collection
set是无序的,list是有序的
set里相同元素只能存储一个,list可以存储多个
20、怎样判断set里的元素是否重复?
先判断hashcode,如果hashcode不同,那么两个元素一定不同,如果hashcode相同,用equals比较。
21、equals和==区别?
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。22、启动一个线程是用run()还是start()?
run(),start()只是让他进入就绪状态。
23、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
swtich只能作用在整型上或者可以强转成int的,如byte int char short,long和string是不可以的。
24、数组和集合类的区别?
数组能够存储任何类型包括基本类型,但集合类只能存储引用类型.
数组创建时必须指定长度且长度不可改变,但集合类的长度是可以改变的.
数组的效率相对较高,在元素数量确定的情况下应首选使用数组.
25、jsp和servlet里的请求转发如何实现?
一种是response.sendRedirct("转发地址")
一种是request.getRequestDispatcher("转发地址").forward(request,response)
26、描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理?
session和cookie都是保存客户信息的
cookie记录在客户端,session保存在服务器端
sessionid保存在客户端,所以session更安全
cookie有长度限制,session没有。
27、ArrayList、Vector和LinkedList的区别?
ArrayList和Vector的存储结构是线性表,物理结构是相邻的,所有查询的速度较快,但新增和删除的速度相对较慢.
LinkedList的存储结构是双向链表,物流结构不相邻,查询较慢,但新增、删除的速度较快.
Vector是线程安全的,而ArrayList是非线程安全的.在不需要考虑多线程的情况下、ArrayList效率相对较高.
28、preparedstatement和statement的区别?
preparedstatement是预编译的,对于批量处理可以大大提高效率.
使用 statement对象。在对数据库只执行一次性存取的时侯,用 statement对象进行处理。preparedstatement对象的开销比statement大,对于一次性操作并不会带来额外的好处。
statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得, 编译一次后,只需往里面传参数即可,不需要在编译。
preparedstatement比statement要安全
如果有一条SQL语句: "select * from 表 where 用户名 = '用户名'"
Statement的SQL语句是这样写的: "select * from 表 where 用户名 = '"+ 变量值 +"'"
PreparedStatement的SQL语句是这样写的: "select * from 表 where 用户名 = ?" 然后对应?赋值
这样我们就发现输入 "aa' or '1' = '1"
Statement是将这个和SQL语句做字符串连接到一起执行
PreparedStatement是将 "aa' or '1' = '1" 作为一个字符串赋值给?,做为"用户名"字段的对应值,显然这样SQL注入无从谈起了.
实现机制不同,注入只对SQL语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,不再需要对SQL语句进行解析,准备,因此也就避免了SQL注入问题.
- java基础笔试题
- java 基础笔试题
- java基础笔试题
- Java基础笔试题
- Java 笔试基础题
- java基础笔试题
- Java基础笔试题
- java基础笔试题
- Java基础笔试题
- java基础笔试题
- java基础笔试题
- Java基础笔试题
- java基础笔试题汇总
- Java 笔试基础题2
- Java基础编程笔试题
- Java基础笔试题干货
- Java----巨人网络java笔试基础题
- Java笔试题:Java基础概念
- 寄语
- VIM7.3添加中文帮助文档
- 在防火墙上开放Oracle服务端口(转)
- Solr学习(2) Solr4.2.0+IK Analyzer 2012
- 连接网络打印机时出现:操作无法完成。键入的打印机名不正确,或者指定的打印机没有连接到服务器上
- java 基础笔试题
- HTML版的导出Excel
- 数据结构与程序设计练习2.2E2(b)
- FineUI_动态绑定Grid
- (android 开源项目android pn) android 推送服务简介
- Android静默方式实现批量安装卸载应用程序
- 用户权限管理
- C语言深度解剖读书笔记(5.内存管理的艺术)
- disable 和 readyonly的使用区别