Java面试题及解答

一、

1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。
int、char、byte、float、double、short、boolean、long。

String不是基本数据类型,其为对象,是引用数据类型(类、接口、数组等)。

基础类型与引用类型的区别是,基础类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构
基本类型仅表示简单的数据类型,引用类型可以表示复杂的数据类型,还可以操作这种数据类型的行为
java虚拟机处理基础类型与引用类型的方式是不一样的,对于基本类型,java虚拟机会为其分配数据类型实际占用的内存空间,而对于引用类型变量,他仅仅是一个指向堆区中某个实例的指针。

引用类型、对象、引用值:

引用类型包含:类、接口、数组

对象:即类或者数组的实例

引用值:引用对象的指针 

 


2.字符串的操作:
 
写一个方法,实现字符串的反转,如:输入abc,输出cba

  写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc

 

字符串反转:public void reverse (String reStr){

		char[] reChar= reStr.toCharArray();
		char m;
		int n = reChar.length - 1;
		for(int i=0;i<reChar.length/2;i++){
			m = reChar[i];
			reChar[i] = reChar[n-i];
			reChar[n-i] = m;
		}
		
		System.out.println(String.valueOf(reChar));
	}
 

字符串替换

 

3.数据类型之间的转换
 
如何将数值型字符转换为数字(IntegerDouble
 
如何将数字转换为字符
 
如何取小数点前两位,并四舍五入。

 

Integer.valueOf(""); Double.valueOf("");

String.valueOf();

 

double t=1898.179; 
 t = t * 100;
 t=Math.round(t); 
 t = t/100;
 System.out.println(t); 
 

 

4.日期和时间
 
如何取得年月日,小时分秒
 
如何取得从1970年到现在的毫秒数
 
如何获取某个日期是当月的最后一天
 
如何格式化日期

Date date=new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(date)); 
date.getTime()
date.after(...)

 

5.数组和集合

Java集合类:

集合类之间的基本关系为:

Collection(实现该接口的对象至少包含两个构造方法,一个为无参构造方法,初始化一个空集合;另一个以Collection类型的实例为参数,初始化的集合拥有实参中的所有数据元素)

|

|----List(其中数据元素可以重复,也可以为null值)
| |

| |--ArrayList(数组,自增长,非线程安全)

| |

| |---LinkedList(双向链表,先进先出队列,非线程安全,通过其中的内部类来实现)

| |

| |----Vector(线程安全,可在其构造方法中设定自增长值)
| | |
| |--Stack
|
|

|-----Set(其中数据元素不能重复,但可以为null值)

  |

  |--HashSet(不保证其中数据元素顺序,允许null值,非线程安全)

  | |

  | |--LinkedHashSet(其内部结构为双链表,其余与HashSet相同)

  |

  |--TreeSet

  |

 

 

Map(通过 键----值 对来实现存储,key不能重复,且key与value一一对应,至少有两种构造方法,无参构造方法和以Map为参的构造方法,允许自身为value但不允许为key)

|

|

|---HashMap()

|

|

|---TreeMap()

 

附:HashMap与HashTable异同:都实现了Map接口,HashMap非线程安全,HashTable线程安全;HashMap速度快于HashTable,允许null做为key值或value值。

 

6.文件和目录(I/O)操作
 
如何列出某个目录下的所有文件
 
如何列出某个目录下的所有子目录
 
判断一个文件或目录是否存在
 
如何读写文件

 

	public void getFileName(File[] file){
		for(int i=0;i<file.length;i++){
			if(file[i].isDirectory()){
				getFileName(file[i].listFiles());
			}else{
				System.out.println(file[i].getName());
			}
		}
	}

  public void getFileName(File[] file){

		for(int i=0;i<file.length;i++){
			if(file[i].isDirectory()){
				getFileName(file[i].listFiles());
				System.out.println(file[i].getName());
			}
		}
	}

 file.exists();

 

 

//最基本的读写
		File file = new File("E:\\upfile\\test.txt");
		try {
			BufferedWriter bw = new BufferedWriter(new FileWriter(file));
			bw.write("sklfjslfjkfjlkjlkjl苏联空军冷静思考了该贷款利率");
			bw.flush();
			bw.close();
			BufferedReader br = new BufferedReader(new FileReader(file));
			System.out.println(br.readLine());
			br.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 

 

7.Java多态的实现(继承、重载、覆盖)


8.
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。

 

 
9.Java中访问数据库的步骤,StatementPreparedStatement之间的区别。

实例化与所用数据库相匹配的数据库驱动程序,连接数据库,进行数据库操作,关闭数据库。

以Mysql数据库为例:

 

			Class.forName("com.mysql.jdbc.Driver");
			Connection con = DriverManager.getConnection(url);
			con.close();
 

 

java在与数据库打交道的过程中,总会与Connection、PreparedStatement、ResultSet这几个类扯上关系;首先在这说明一下PreparedStatement与Statement的区别:
1.PreparedStatement是预编译的,对于批量处理可以大大提高效率.
2.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得,   preparedstatement支持批处理
4.执行许多SQL语句的JDBC程序产生大量的Statement和PreparedStatement对象。通常认为PreparedStatement对象比Statement对象更有效,特别是如果带有不同参数的同一SQL语句被多次执行的时候。PreparedStatement对象允许数据库预编译SQL语句,这样在随后的运行中可以节省时间并增加代码的可读性。
使用PreparedStatement类时尽量采用?方式传递参数
 

 

 

二、JSP&Servlet技术
1.
描述JSPServlet的区别、共同点、各自应用的范围
JSP基于Servlet之上,是为弥补Servlet在展现层方面的不足而开发出来的一种技术,JSP最终仍会被编译成.class文件来执行。Servlet为纯Java代码,其擅长业务处理不擅长前台展现(也可实现out.write()但非常麻烦);JSP为HTML与JSP标签的混合。在实际项目中一般采用Servlet实现业务逻辑,JSP生成动态网页,实现业务逻辑与前台展现的分离。在Struts框架中,JSP控制视图层,Servlet负责控制层。

 

2.Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符(< > & “”
可以使用正则表达式来筛选。

3.JSP中如何读取客户端的请求,如何访问CGI变量,如何确定某个Jsp文件的真实路径。
通过客户端向服务器发起的请求 

 

4.描述CookieSession的作用,区别和各自的应用范围,Session工作原理。

Cookie存储于客户端,包含客户端的一些信息;Session存储于服务器端,贯穿于整个会话过程中

 

 

5.列出Jsp中包含外部文件的方式,两者有何区别。

<%@ include file="" %>
6.
说明JsperrorPage的作用,应用范围。
7.
介绍在Jsp中如何使用JavaBeans
8.
简单介绍JSP的标记库
9.Jsp
Servlet中的请求转发分别如何实现。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值