面试题汇总
2017-07-27 20:03 tlnshuju 阅读(245) 评论(0) 编辑 收藏 举报1.冒泡排序
public static void main(String arg[]){
int[] num=new int[]{2,1,6,7,48};
int temp=0;
for(int i=0;i<num.length;i++){
for (int j<=1;j<num.length-1;j--){
if(num[j]>num[j-1]){
temp=num[j];
num[j]=num[j-1];
num[j-1]=temp;
}
}
}
for(int i=0;i<num.length;i++){
system.out.print(num[i]);
}
}
2.水仙花数
public static void (String arg[]){
int a,b,c;
for(i=100;i<1000;i++){
a=i/100;
b=i/10%10;
c=i%10;
}
if(a*100+b*10+c==a*a*a+b*b*b+c*c*c){
system.out.print();
}
}
3.&与&&的差别有什么?
两个都是表示逻辑与的意思,&&具有短路的效果。&还能够作为
4.==与equals有什么差别
==表示两个对象之间是否相等,也表示推断内存中的值是否相等。equals表示推断两个独立的对象是否相等
5.public private portected以及不写时的差别
public 当前包 当前类 子类 其它包 private当前类 portected当前类 当前包 不写是表示当前包 当前类 子类
6.重载与重写的差别
重写表示子类继承了父类的方法。在这基础上有加入了新的方法
重载表示方法名同样,而參数不同样
7.面向对象有哪些特征?
封装 继承 多态 抽象 跨平台
8.String 与StringBuffer 有何差别
String不能增长而StringBuffer能够增长
9.final、finally和 finalize差别
final是终结类。被他定义的为常量。表示为属性不可变。
finally为异常执行的一部分,表示不论怎样都会被执行到
finalize为垃圾回收机制的一个方法
10.执行时异常与一般异常有什么差别
执行时异常会一层一层往上抛。直到找到处理方法,能够不处理,一般异常必须处理,否则代码无法执行
11.throws、thorw、try catch finally各代表什么?
thorws表示捕获而且抛出异常
throw表示抛出异常
try catch finally表示内部捕获而且处理异常
sleep和wait有什么差别?
sleep是线程类(Thread类)的方法,调用sleep不会释放对象锁。
wait是object的方法,调用wait方法导致本线程放弃对象锁
12.多线程有几种实现方法
继承Thread类 实现runnable接口
13.collection框架中实现哪些接口
list set
14.Arraylist和Vector有什么差别?
Vector表示线程安全,而Arraylist表示线程不安全
Vector和ArraysList都有默认的范围,当超出这个范围时。都会发生增长,Vector默认增长为原来的一倍。而Arraylist默认增长为原来的一半
15.Hashtable和Hashmap的的差别
Hashtable继承dictory类。而Hashmap是Map的一个接口 HashMap同意key为空。而HashMap不同意为空 HAshTable是线程安全的,HashMap是线程不安全的
16.List和map的差别
List是有序的单项列表存储,而Map是採用key,value的双向列表存储 list是有顺序的,同意反复;map是无序的,value是能够反复的
17.list、set和map存储元素时,各有什么特点
list和set都是採用单向列表存储。而list是有序的。同意有反复值,Set是无序的。不同意有反复元素,Map是採取键值对的形式存储值
18.说出一些经常使用的类。包,接口 各写5个
类 Date String BufferReader Bufferwriter list 包util、io、lang、sql、servlet接口HttpSession Httprequest HttpRepose collection、runtime runable
19.字节流和字符流的差别
字符流是字节流的包装。字符流则是直接接受字符串。字符向字节转换时,要注意编码的问题。
二、java web部分
1.tomcat优化经验
去掉对web.xml的监视,提前把jsp编辑成Servlet
2.http请求get和post的差别
GET - 从指定的server中获取数据(安全,可以被缓存,有长度限制) POST - 提交数据给指定的server处理(不能被缓存,没有长度限制)
3.servlet的生命周期
初始化init()方法 与浏览器进行交互service()方法 销毁时destory()方法
4.forword和Redirect的差别
从地址显示来说forword是server请求资源。地址栏不会变。redirect是服务端依据逻辑发送一个状态码告诉浏览器去又一次请求那个地址。所以地址栏显示是新的地址
从数据共享来看,forword转发页面和转发到的页面能够共享request里边的数据,redirect 不能共享数据
从执行地方来看 forword一般用于用户登录,依据角色转发时对应的模块。redirect一般用于用户注销和返回主界面以及跳到其它站点
从效率上来看,forword高 redirect低
5.jsp有几种内置对象。各自是什么?有什么作用
9种。request(发送请求) reponse(返回响应) session(与请求有关的会话期)applaction(正在运行的内容) page(jsp本身)
pagecontext(网页的属性) config(架构部件) out(输出) execption(jsp的异常)
6.request.getAttribute()和request.getParameter() 有何差别
getParameter()得到的都是String型的。获取get、post传递的參数,用于表单重定向传值是接收数据使用 而getAttribute()则是对象获取对象容器的数据值,
用于服务端重定向时接收setAttribute传过来的值
7.jsp中动态包括和静态包括有什么差别?
动态包括用jsp:include动作实现<jsp:include page="included.jsp"flush=true/>他总会检查包括文件的变化,能够带參数
静态包括用include伪码实现。不会检查所含文件的变化。使用与包括静态页面<%@include file="include.htm"%>
主要差别:动态包括指包括动态jsp文件,而静态包括指的是包括静态htm文件。
三、数据库部分
1.依据部门号从高到低,工资从低到高排列出每一个员工的信息
employee(员工)
eid。ename。salary(薪资),deptid;
SELECT *FROM employee by deptid desc,salary;
2.列出部门中工资高于本部门平均工资的员工数与部门号,并按部门号排序
(关联查询)SELECT a.name,a.salary,a.deptid FROM emp a
(selectid avg(salary) avgsal form emp group by deptid)b where a.deptid =b.deptid and a.salary> b.salary
3.union和union all有什么差别
union会筛选去掉反复记录 union all不会过滤反复结果,从效率上讲。union all要比union快
4.数据库分页
mysql:SELECT *FROM t ORDER by id limit30,10;
oracel: SELECT * FROM (select rownum r,* FROM t where r<=40)where >30
5.用一条语句查询出总分高于80分学生的成绩
SELECT distinct name from score where name not in(select distinct name from score where score<=80)
6关系型数据库与非关系型数据库有什么差别
性能
NOSQL是基于键值对的,能够想象成表中的主键和值的相应关系,并且不须要经过SQL层的解析,所以性能很高。
可扩展性
相同也是由于基于键值对,数据之间没有耦合性,所以很easy水平扩展。
关系型数据库的优势:
复杂查询
能够用SQL语句方便的在一个表以及多个表之间做很复杂的数据查询。
事务支持
使得对于安全性能非常高的数据訪问要求得以实现。
对于这两类数据库,对方的优势就是自己的弱势,反之亦然。
7.数据库中怎样删除反复数据
select form people where peopleID in(select peopleId from people group by peopleId having count(peopleId)>1)
8.注冊jdbc驱动的三种方式
1.DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
2.System.setProperty("jdbc.drivers", "com.microsoft.sqlserver.jdbc.SQLServerDriver");
3.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
9.数据库三范式
第一范式(确保每列保持原子性)
第二范式(确保表中的每列都和主键相关)
第三范式(确保每列都和主键列直接相关,而不是间接相关)
四、框架技术
1.谈谈你对struts框架的理解
首先struts2框架属于mvc设计模式中的c层,相当于一个大的servlet,他的名字叫Actionservlet
ActionServlet把请求交给action中的excute()处理之前会将请求封装到formbean对象,会调用validate方法进行校验,action运行完后发回结果视图。
2.struts1和struts2的差别
都是MVC的web框架
3.struts的默认拦截器
4.hibernate的工作原理
使用hibernate框架的基本流程,配置configration、产生sessionFactory、创建session对象、启动事务 、完毕crud操作、提交事务、关闭session
使用hibernate时,先要配置hibernate.cfg.xml文件,然后再每一个实体类下hbm.xml文件
4.1 get load差别
get()採用马上载入方式,而load()採用延迟载入;
get()方法运行的时候,会马上向数据库发出查询语句,
而load()方法返回的是一个代理(此代理中仅仅有一个id属性),仅仅有等真正使用该对象属性的时候,才会发出sql语句
假设数据库中没有相应的记录,get()方法返回的是null.而load()方法出现异常ObjectNotFoundException
5.hibernate离线查询
离线查询事实上就是动态查询DetachedCriteria一般我们进行web开发都会碰到多条件查询。
比如依据条件搜索。条件的多少 逻辑关系 是or 还是and等等。
我们要依据这些条件来拼写查询语句。可是有了离线查询这些都不是问题。我们能够使用DetachedCriteria来构造查询条件,然后将这个
DetachedCriteria作为方法调用參数传递给业务层对象。而业务层对象获得DetachedCriteria之后,能够在session范围内直接构造Criteria,
进行查询。
就此。查询语句的构造全然被搬离到web层实现,而业务层则仅仅负责完毕持久化和查询的封装就可以。
换句话说,业务层代码是不变化的。
我们不必为了查询条件的变化而去频繁修改查询语句了。
6.两种查询方式
一种是hql语句查询,用Query接口去实现。一种是条件查询,用Criteria接口去实现。
7.spring的工作原理
实现了工厂模式的工厂类,这个类名为beanFactory。在程序中通常BeanFactory的子类applicationContext。spring相当于一个大的工厂类
在其配置文件里通过<bean>元素配置用于创建实例对象的类名和属性名和实例对象的属性。
包含ioc和aop(依赖注入 控制反转)
(面向切面编程。主要用在事务和日志文件里)
8.事务管理
五种方式 每一个bean都使用一个代理。 全部bean都使用一个代理基类, 使用拦截器。 使用tx标签配置的拦截器, 全注解
9.hibernante和mybatis有什么差别
hibernate是全自己主动类型的框架,mybatis是半自己主动的框架,mybatis执行速度快,执行效率高
10.openSession 和 getcurrentSession的差别
getCurrentSession创建的session会和绑定到当前线程,而openSession不会。
getCurrentSession创建的线程会在事务回滚或事物提交后自己主动关闭,而openSession必须手动关闭
j2ee
J2EE 本身是一个标准。一个为企业分布式应用的开发提供的标准平台。
J2EE 也是一个框架,包含 JDBC、JNDI、RMI、JMS、EJB、JTA 等技术。
web 容器:给处于当中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET 直接更容器中的环境变量接口交互,
不必关注其他系统问题。
主要有WEB server来实现。 比如:TOMCAT,WEBLOGIC,WEBSPHERE 等。该容器提供的接口严格遵守 J2EE
规范中 的WEB APPLICATION 标准。我们把遵守以上标准的WEB server就叫做 J2EE 中的 WEB 容器。 EJB 容器:Enterprise
java bean容器。更具有行业领域特色。
他提供给执行在当中的组件 EJB 各种管理功能。仅仅要满足 J2EE 规范的 EJB 放入该容器,
立即就会被容器进行高效率 的管理。
而且能够通过现成的接口来获得系统级别的服务。比如邮件服务、事务管理。
JNDI:( Java Naming & Directory Interface)JAVA 命名文件夹服务。
主要提供的功能是:提 供一个文件夹系统,
让其他各地的应用程序在其上面留下自己的索引,从而满足高速查找和定 位分布式应用程序的功能。
JMS:( Java Message Service)JAVA 消息服务。
主要实现各个应用程序之间的通讯。
包 括点对点和广播。
JTA:( Java Transaction API)JAVA 事务服务。提供各种分布式事务服务。应用程序仅仅需 调用其提供的接口就可以。
JAF:( Java Action FrameWork)JAVA 安全认证框架。提供一些安全控制方面的框架。
让 开发人员通过各种部署和自定
义实现自己的个性安全控制策略。
RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于
通过远 程调用服务。比如。远程有一台计算机上执行一个程序,它提供股票分析服务,我们能够在本地计算机上实现对
其直接调用。
当然这是要通过一定的规范才干在异构的系统之间进行通 信。
RMI 是 JAVA 特有的。