遇到的java面试题
1、struts2与struts1的区别
2、声明式事务是什么,怎么实现?
3、ajax两种请求方式
4、java中string str=new string("ss")创建了个几个对象内存分配如何?
java 虚拟机分为堆区、栈区、代码区、树根区,创建了一个对象,在堆中有一个内存,保存的是"ss",这个字符串的值,在栈中有一个内存,保存的堆是"ss",这个字符串的引用str,即栈中str是一个引用,指向堆中"ss"这个字符串的地址
5、spring有几种拦截器
6、struts2有几种拦截器
7、敏捷开发 取代 UML统一建模语言
设计模式是一套反复使用,多数人知晓,经过分类编写,代码设计经验的总结。
用例图、静态图、行为图、交互图、实现图
8、++i与i++
10、线程如何同步、状态、
11、分层设计的好处
12、序列化接口id有什么作用?
13、hashCode方法(hashCode和equals)
14、编程:一笔总额为T元的N年贷款,年利率为R,求出每一期还款本金和利息的总额
部分本金利息=部分本金金额*月利率*月数
int monthMoney=T/N/12;
float monthRate=R/12;
int totalMonth=N*12;
float totalRate=0;
for(int i=1;i<totalMonth;i++){
totalRate+=monthMoney*monthRate*i;
}
int result=monthMoney+totalRate/N/12;
15、 介绍Aop
16、面向对象的特征
17、抽象类和接口的区别
18、抽象方法是否可以是static、native、synchronized?
1)不能是static的,抽象方法时要被子类事项的,static和子类没有关系
2)native标示该方法要用另外一种依赖平台的编程语言来实现,不存在被子类实现的问题,所以不行
3)关于abstract与synchronized,我觉得不行,同步要用到具体的方法上
19、servlet生命周期
20、什么是java序列化,如何实现java序列化
21、字节流与字符流的区别
22、java中有几种类型的流
23、说出一些常用的类,包、接口
24、两个对象组相同(x.equals(y)==true),却有不同的hashCode对吗?
如果对象保存在hashSet或hashMap中,equals相等,那么hshCode必须相等
如果不是保存在hashSet或hashMap中,equals与hashCode没有关系,hashCode可以不等
25、hashMap与hashTable的区别
26、List、set、map
27、string与stringBuffer与stringBuilder区别
28、把","分割的字符串转换成数组
1)java.util.scanner input=new java.util.scanner(system.in);
system.out.printIn("输入字符");
string str=input.next();
string[] arr=str.split(",");
for(int i=0;i<arr.length;i++){
system.out.printIn(arr[i]);
}
字符串有length()方法,数组只有length属性,没有length方法
2)stringTokenizer token=stringTokenizer(str,",");
string[] result=new string[token,countTokens()];
int i=0;
while(token.hashNext()){
result[i++]=token.nextToken();
}
25、string s="a"+"b"+"c"+"d"创建了几个对象
1个;
说明:
string s1="a";
string s2=s1+"b";
string s3="a"+"b";
system.out.printIn(s2=="ab"); //false
system.out.printIn(s3="ab");//true
说明javac编译可以对字符串常量直接相加的表达式进行优化,不必要运行想法运算出来,而是在编译时去掉加号,直接编译成这些常量相加的结果
26、try{}里有一个return语句,那么紧跟在try后的finally{}里的code会不会还行,什么时候执行,return之前还是之后?
按java规范,在try。。。catch。。finally中,如果try。。。finally或catch。。。finally都有return,则两个return都执行,并且最终返回的是finally里的return值。
如果finally没有return,则最终、返回的是try或catch中的return值。但finally中的代码会执行,并且在return之前,除非碰到if exit()。
class Test{
main(){
system.out.printIn(new Test().test());
}
static int test(){
int x=1;
try{
return x;
}
finally{
return ++x;
}
}
}
相等于计算出return值后先将return 值在 内存中暂存,执行finally,finally执行完,再返回内存中暂存的值,结果为1;
27、错误和异常有什么区别?
是throwable的两个分支;
error 指错误,通常是程序员不可能通过代码解决的问题,代表致命的错误,不是个人处理的了的
Exception指异常,人为的错误,可以理解为程序运行时出现的意外情况
28、运行的异常和一般异常有何区别?
异常是指程序运行的可能出现的非正常状态运行时异常表示虚拟机的通常操作中 可能遇到的异常,是一种常见运行错误。
一般异常,java编译器要去方法,必须声明抛出可能发生的非运行时异常,但不要求必须抛出未被捕获的运行时异常
29、java中异常处理机制的简单原理和应用(面向对象)
异常是指程序运行时可能发生的非正常情况和错误,java使用面向对象的方式来处理异常,它把程序中发生的每个异常封装到一个对象来 表示,该对象包含异常的信息
java对异常进行分类
java.lang.Throwable
error、exception、运行时异常、一般异常
30、写出5个runtime Exception
NullPointException
UnsupportedOperationException (不支持请求操作)
Index outOfBoundsException (索引超出范围)
array store Exception (错误对象存储到对象数组)
array indexOutOfBounds Exception
31、java语言如何进行异常处理,关键字throw,throws,try...catch...finally 分别代表什么意义,在try块中可以抛出异常吗?
java通过面向对象的方式处理异常,把各种不同的异常进行分类,并提供了良好的接口,java中每个异常都是一个对象,它是throwable或其子类的实例,当一个方法出现异常便抛出一个对象,该对象包含异常信息,调用对象的方法可以捕获异常并进行处理。java异常处理通过5个关键字来实现
throw:抛出异常
throws:表明一个函数可能抛出的各种异常
try:指定一块可能发生异常的程序
catch:指定要捕获的异常的类型
try块中可以抛出异常
try{
throw new Exception();
}
catch(Exception e){}
32、java中有几种方法可以实现一个线程?
两种:一种是通过thread类的子类实现
另一种是通过实现runnable接口
new thread(){
public void run(){
}
}.start();
用关键字synchronized修饰同步方法,java中为什么不推荐用stop()和suspend();
stop()方法终止所有来结束的方法,包括run(),立即释放所有锁住对象上的锁,不安全。
条用suspend()方法,栓起一个有锁住的线程,连续回复之前不会被释放,会发生死锁。
若标志线程应该挂起,使用wait(),若标志线程恢复,使用notify();
34、同步和异步有什么区别?
同步是指多个线程同时访问一个资源,一个在用时,其他的需要等待,同步是线程安全的。
异步非线程安全,并发
35、启动一个线程用start(),run()是该线程所关联的执行代码
36、线程的基本概念,基本状态,以及状态,直接的关系
............
37、当一个线程进入一个对象的synchronized方法,其他线程是否可进入此对象的其他方法。
一个对象的一个synchronized方法只能由一个线程进行访问
分几种情况
1)其他方法方法是否加了synchronized,如果如果没加,可以
2)如果这个方法调用wait(),则可以进入其他synchronized方法
3)如果其他方法都加了synchronized关键字,并且没有调用wait,则不能
38、多线程有几种实现方法,同步有几种实现方法?
多线程:继承thread类,实现runable接口
同步:添加同步锁,wait和notify
39、sleep与wait的区别
sleep就是正在执行的线程主动让出CPU,CPU去执行其他线程,在sleep指定的时间过后,CPU将继续执行这个线程,如果当前线程进入了同步锁,sleep不会释放锁,即sleep()让出了CPU,其他被同步锁挡住的线程也无法执行
wait()是一个已经进入同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行,调用了notify()方法,调用wait()方法的线程去解除wait状态,程序可以再次得到锁并继续运行,notity方法不释放锁,只是告诉调用wait()的线程可以参与获得锁的竞争,但不是可以得到锁,锁还没释放,当notify()方法后面的代码执行完,才释放锁
40、synchronized和java.util.concurrent.Locks.Lock有何异同?
相同点:Lock能完成synchronized实现的所有功能
不同点:Lock有更精准的线程语义和更好的性能;synchronized会自动释放锁,Lock需要手动释放并且必须在finally从句中释放,Lock有更强大的功能,如:它的try Lock方法可以非阻塞方式去解锁
。。。。。。。。。。。。
Collection框架
集合框架(Collection Framework)泛指java.util包得若干个类和接口
1、Collection框架中实现比较要实现什么接口?
comparable, comparator
2、ArrayList与vector区别
相同点:都实现了List接口,List继承Collection接口,都是有序集合,允许重复
区别:1)vector线程安全,ArrayList线程不安全,如果有一个线程访问,用ArrayList,效率较高,多个线程访问,用vector,不用自己考虑和编写线程安全代码
2)ArrayList与vector都有一个初始量大小,当存储元素超过容量时,需要增加存储空间,每次增加多个存储单元,vector为原来的一倍,ArrayList位0.5倍
3、HashMap与HashTable区别?
HashMap是HashTable的轻量级实现,都实现map接口,主要区别:
1) HashMap允许空键值
2)HashTable线程安全,HashMap非线程安全,当只有一个线程访问时,HashMap效率高
3)HashTable基于陈旧的Dictionary类,HashMap基于java1.2引进的map接口的一个实现
4、List与map区别
list单例,map双利
list有序,允许重复,map无序,key值不能重复
5、List,set,map存储元素,各有什么特点?
list:有序,可重复,允许null,单例,继承Collection
set:无序,不可重复,允许null,单例,继承Collection
map:保存键值对,value可多值
6、ArrayList,vector与linkedList的存储性能和特性。
ArrayList与vector使用数组方式,在存储数据,该数组元素数大于实际存储数据,以便增加和插入元素,它们都允许直接按序号索引元素,但插入元素引起数组元素移动等内存操作,所以插入数据慢,索引数据快。
vector线程安全,通常性能比ArrayList差,linkedList使用双向的链表实现存储,按序号索引需要进行前向或后向遍历,但出入数据只需记录本项的先后项即可,所以插入过度快,索引慢
linkedList线程不安全,linkedList提供一些方法,可当做堆栈和队列来使用。
7、去掉vector中重复元素
vector v2=new vector();
for(int i=0;i<v.size();i++){
object obj=v.get();
if(!v2.contains(obj))
v2.add(obj);
}
8、collection 与collections的区别。
collection是集合类的上级接口,list,set实现它
collections是集合类的帮助类,提供一系列静态方法,实现对各种集合的搜索,排序,线程安全化等操作。
9、set元素不能重复,用什么方法来区分重复与否,==还是equals()?有什么区别
set元素不能重复,用equals()进行判断
equals用来检测,两个对象是否相等,即两个对象内容是否相等
==比较引用和基本数据类型
10、你所知道的集合有哪些,主要方法
最常用的集合 List 、Map
List包括arrayList与vector,它们是可变大小的列表,适合构建,存储和操作任何类型对象的元素类别;List适用于按数值索引访问元素的情形;Map提供更通用的元素存储方法,map集合类用于存储元素对(健和值),每个键对应一个值
collection包括list和set;list包括arrayList、vector;;;set包括hashset、treeset
map包括hashmap与hashtable
方法: set 有 add、remove、contains
map有 put、remove、contains
list有get(int、index)
set中没有get()方法,list和set都可以迭代出所有元素,迭代时,得到iterator对象,所以都有iterator方法
map可以返回三个集合:key、value、key和value组成的EntrySet对象集合,有get(key)方法
。。。。。。。。。。。。。。。。。。。。。。。。。。
1、数据库三大范式是什么?
第一范式:字段具有原子性,不可再分;
数据库表中的字段都是单一属性,不可再分,如姓名不能分为姓和名,只能作为一个整体
第二范式:在第一范式的基础上建立起来,为了使数据库表中得实例式。。。。。
2、用一条sql语句查询没门课>80的人
创建表:
create table score(
id int primary key auto_increment,
name varchar(20),
subject varchar(20),
score int
);
注:auto_increment 对主键id进行自动增加编号的
插入数据:
insert into score values
(null,'张三','语文',81)
(null,'张三','数学',90)
(null,'李四','语文',70)
(null,'李四','数学',100);
select distinct name from score where name not in (select distinact name from score where score <= 80);
******************************************* hibernate 查询方式总结 **************************************************
1、get() and load()
session.get(clazz,id);
session.load(clazz,id) ;
区别:@get 查询,不管查询结果是否使用,只要调用get,立即到数据库中查询,而load查询使用延迟加载,当使用时再到数据库中查询
@当从数据库中查询的结果不存在时,get返回null,load返回false,所以如果不确定是否有匹配的行存在时,用get查询
2、hql
string hql=" from user";
query q=session.CreatQuery(hql);
q.list();
3、使用Criteria
Criteria c=session.createCriteria(user.class);
c.
遇到的java面试题的更多相关文章
- java面试题及答案(转载)
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- 115个Java面试题和答案——终极列表(下)
第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...
- Java面试题(全)
JAVA部分 什么是反射机制?反射机制应用(Struts中反射机制的应用) 答:运行状态中,对于任意一个类,都可以知道它的所有属性和方法,对于任意一个对象都可以调用它的任意一个方法,这种动态获取信息以 ...
- Java面试题大全(四)
JAVA代码查错 1. abstract class Name { private String name; public abstract boolean isStupidName(String n ...
- 大公司的Java面试题集
找工作要面试,有面试就有对付面试的办法.以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司. 面试 ...
- 收集了50道基础的java面试题
下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...
- Java笔试题解答和部分面试题
面试类 银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...
- 转:Java面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101
Java面试题集(51-70) Java程序员面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101 摘要:这一部分主要 ...
- JAVA面试题集之基础知识
JAVA面试题集之基础知识 基础知识: 1.C 或Java中的异常处理机制的简单原理和应用. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就 ...
- [原]Java面试题-将字符串中数字提取出来排序后输出
[Title][原]Java面试题-将字符串中数字提取出来排序后输出 [Date]2013-09-15 [Abstract]很简单的面试题,要求现场在纸上写出来. [Keywords]面试.Java. ...
随机推荐
- Springboot数据库连接池报错的解决办法
Springboot数据库连接池报错的解决办法 这个异常通常在Linux服务器上会发生,原因是Linux系统会主动断开一个长时间没有通信的连接 那么我们的问题就是:数据库连接池长时间处于间歇状态,导致 ...
- QFileSystemModel
#include "dialog.h" #include "ui_dialog.h" Dialog::Dialog(QWidget *parent) : QDi ...
- js检测手机摇一摇
1.检测设备是否支持重力感应事件deviceorientation deviceorientation 提供设备的物理方向信息,表示为一系列本地坐标系的旋角 function motionHandle ...
- Foreach遍历
前天在项目中遇到一个问题,foreach遍历过程中修改responses中的对象,其中responses的类型:IEnumerable<Order>,代码如下: foreach (Orde ...
- spring定时任务
需求:在tomcat启动时开启一个定时任务,即项目启动完成后,自动执行某一特定任务. 想法:容器启动时执行方法,最容易想到的就是servlet中可以配置load-on-startup,设置一个正整数也 ...
- Git的.gitignore文件配置
.gitignore是Git工具的配置文件,用于屏蔽某些文件上传到线上. 创建.gitignore 在window系统中,不允许新建文件名以"."开头的文件,所以通过git bas ...
- Url获取图片流并打包~
因为公司项目需求,做一个所有数据以excle的格式汇出,其中包括了图片. 而数据库保存的是图片的url,虽然不知道为什么....如果数据量大的话, 那么所有数据汇出,包括图片的话... 额.. 不知道 ...
- 通过Chrome浏览器检测和优化页面
1.访问(http://www.cnblogs.com/viaiu/) 2.点击F12 前两步就在扯淡 3.点击Audits标签,进入测试界面 4.点击按钮开始检测 5.如下图可以进行页面加载资源的详 ...
- memcpy内存复制
memcpy(predata,frame,1920*1080*4);
- 小米抢购(简单版v0.1)-登录并验证抢购权限,以及获取真实抢购地址
小米(简单版)-登录并验证抢购权限,以及获取真实抢购地址! 并不是复制到浏览器就行了的 还得传递所需要的参数 这里只是前部分 后面的自己发挥了 { "stime": 1389 ...