一些比较实用的软件教材

java面试题

面试了一家,两家,三家。。。什么时候能拿到offer!!技术,技术!在求职中总结,加油!

1.什么是java,为什么开源,跨平台
答:

     Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言
     Java 技术具有卓越的通用性、高效性、平台移植性和安全性
     因为JAVA有个属于自己的运行环境,既:JAVA虚拟机,虚拟机与平台无关,JAVA代码经过编译后,直接运行于虚拟机上,实现了跨平台。

2.j2ee 结构

答:

j2ee就是java企业版,是基于java的jsp servlet javabean 等等一系列技术体系的统称
j2ee的三层架构
表现层:主要功能在于数据的显示,数据如何表现。
应用层:主要是对于业务的处理以及数据的处理。
数据层: 主要是实现与数据库的交互。

3.oracle 简单操作
答:

删除满足条件的行:
delete from table_name where your_conditions;
commit;
删除表中的全部数据:
trancate table table_name;
删除表:
drop table table_name;

4.Linux 创建文件,文件夹

答:

打开root
进入到了home的文件夹
1如果你要在那里建一个叫test的文件夹
输入 cd /home 回车 就到了home目录
输入 mkdir test 就可以了
2如果在文件夹里添加(就是创建) 一个文件 例如a.txt
输入 touch test/a.txt 回车
3删除 rm -rf test/ 回车

5.spring 核心接口

答:

1.BeanFactory最基础最核心的接口
重要的实现类有:
XmlBeanFactory,以及ApplicationContext接口下的类

2.Resource接口,可以通用地访问文件资源
1)ClassPathResource:读取得形式为"classpath:ApplicationContext.xml"
2)FileStstemResource:读取得形式为"file:c:\spring\src\ApplicationContext.xml"
3)ServletContextResource:读取得形式为"WEB-INF\ApplicationContext.xml"
//ResourceLoader类用于载入Resource

3.FactoryBean工厂bean
它本身在bean factory中定义,同时又是用于创建目标bean的工厂
spring有以下实现:
1)JndiObjectFactoryBean:通过JNDI查找获取对象
2)LocalSessionFactoryBean:用于在本地装配Hibernate SessionFactory
3)LocalSessionFactoryBean:用于在本地装配JDO PersistenceManagerFactory
4)ProxyFactoryBean:用于获取AOP的代理
5)TransactionProxyFactoryBean:用于为对象创建事务代理,用于实现简捷易用的声明性事务代理
6)RmiProxyFactoryBean:为通过RMI访问的远程对象创建一个代理

4.ApplicationContext加强了BeanFactory的功能,支持以下功能
1)国际化支持
2)资源访问
3)事件监听机制
它的重要的实现类有:
FileSystemXmlApplicationContext,ClassPathXmlApplication,XmlWebApplicationContext

5.Bean生命周期的回调接口
BeanFactoryPostProcessor,InitializingBean,DisposableBean,BeanFactoryAware,ApplicationContextAware,ResourceLoader,BeanPostProcessor

6.MessageSource接口
它的实现类有ResourceBundleMessageSource,ReloadableResourceBundleMessageSource.后者在属性文件修改后会重新载入

6.什么是索引,主键,外键

答:

索引是对数据库表中一列或多列的值进行排序的一种结构,
使用索引可快速访问数据库表中的特定信息。
主键:
能够唯一表示数据表中的每个记录的【字段】或者【字段】的组合就称为主码(主键)。 一个主键是唯一识别一个表的每一记录,但这只是其作用的一部分,主键的主要作用是将记录和存放在其他表中的数据进行关联。在这一点上,主键是不同表中各记录之间的简单指针。所以,主键的值对用户而言是没有什么意义,并且和它要赋予的值也没有什么特别的联系。

外键:
若有两个表A,B,key是A的主键,而B中也有key字段,则key就是表B的外键。

索引:

索引只是加快查询,排序速度,主键和外键定义后可保证数据完整性,省去编写某些触发器。主键最好每张表上都定义,小数据库用唯一索引也可以。

每个表最好有主键,用来保证数据完整性。表的外键是另一表的主键,外键将两表联系起来。 索引只是提高查询排序的速度。

7.hibernate中的核心接口

答:

Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。
这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
下面对这五的核心接口分别加以介绍。
·Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。
但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。
这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
·SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。
这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,
当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
·Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,
Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
·Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
·Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
Criteria接口与Query接口非常类似,它允许你创建并执行面向对象的标准化查询。值得注意的是Query接口也是轻量级的,它不能在Session之外使用。
Callback接口 当一些有用的事件发生时――例如持久对象的载入、存储、删除时,Callback接口会通知Hibernate去接收一个通知消息。一般而言,Callback接口在用户程序中并不是必须的,但你要在你的项目中创建审计日志时,你可能会用到它。

7.二叉树。遍历

答:

前序遍历 根 左子树 右子树
中序遍历 左子树 根 右子树
后序遍历 左子树 右子树 根

8.链表,队列,堆栈的区别

答:

1、栈是个有底的口袋,像袜子。
队列是没底的口袋,像通心粉。
所以:栈的特点是先进后出,队列的特点是先进先出。
2、主要区别是适用的地方不一样,
链表实际上可以认为是一种数据的物理组织形式,是用指针或对象的引用组织起的一种数据的存储方式.
队列和堆栈是一个更高层次的概念,其底层可以是用链表也可以是用数组来实现.
队列和堆栈的主要区别是进出的顺序不一样,
队列是先进先出,堆栈是后进先出.
3 、队列和堆栈是一种特殊的数据组织形式。
可以把他们看成是一系列的集合。
队列可以看成是有2个口的集合一个口叫队头一个叫队尾,只能在对头进行删除操作,在队尾做插入。根据这样的操作。队列特点是先进先出
堆栈可以看成是有1个口的集合,这个口叫栈顶。插入和删除操作只能在栈顶操作。根据这样的操作。堆栈的特点是是后进先出.
链表是一种存储方式,它可以在非连续的内存空间里面存储一个集合的元素。和它对应的是数组,数组要在连续的空间里存储集合的元素

理解:堆栈----应用的场景: 如系统的中断处理。最先中断的程序在堆栈的最下面,最后中断的程序在最上面。先处理最后发生的中断。
队列----队列很容易理解,它主要应用在网络通信、系统等。windows的所有事件都是放在队列里面的。

最典型的,就是系统的任务分配了,每个进程或线程都分配在某些队列里,方便cpu时间片的分配调度,任务的运行不可能是你最后打开的程序先运行吧,当然它有优先级,这个排除在外。

9.jsp,servlet区别

答:

1、Servlet中没有内置对象,原来Jsp中的内置对象都是必须通过HttpServletRequest对象,或由 HttpServletResponse对象生成。
2、对于静态的HTML标签,Servlet都必须使用页面输出流诼行输出。
3、Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,至于Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service 方法用于生成对客户端的响应。
4、在MVC结构中,Servlet是C(control)层,JSP是V(View)层。
5、编程方式不同
JSP是为了解决Servlet中相对困难的编程技术而开发的技术,因此,JSP在程序的编写方面比Servlet要容易的多,Servlet严格遵循Java语言的编程标准,而JSP则遵循脚本语言的编制标准。
6、Servlet必须在编译以后才能执行
JSP并不需要另外进行编译,JSP Container会自动完成这一工作,而Servlet在每次修改代码之后都需要编译完才能执行。
7、运行速度不同
由于JSP Container将JSP程序编译成Servlet的时候需要一些时间,所以JSP的运行速度比Servlet要慢一些,不过,如果JSP文件能毫无变化的重复使用,它在第一次以后的调用中运行速度就会和Servlet一样了,这是因为JSP Container接到请求以后会确认传递过来的JSP是否有改动,如果没有改动的话,将直接调用JSP编译过的Servlet类,并提供给客户端解释执行,如果JSP文件有所改变,JSP Container将重新将它编译成Servlet,然后再提交给客户端
JSP的职责:从数据库取出数据,显示所有的留言信息(当中要用少量的,简单的逻辑处理:循环)、显示签写留言的页面(几乎全部都是html)。
Servlet的职责:接受签写留言页面提交过来的标单数据,进行数据检验,如果正确,则存入数据库并返回留言的显示页面;如果数据有误,给出错误提示后返回签写留言的页面。可以看到,这个就叫做逻辑处理。这些你也完全可以放在JSP中实现,但是用Servlet,其效率和安全性高多了,也让JSP页面变得很简洁明了。

10.string stringbuff stringbuffer区别
答:

STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,
特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

11.session,cookie 区别

答:

Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的内存资源。

12.&和&&的区别

答:

&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).

13.wait()sleep的区别

答:

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,
但是监控状态依然保持,到时候会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的
等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

14.hashMap和hashtable区别

答:

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),
由于非线程安全,效率上可能高于Hashtable.

15.forword,redirect区别
答:

前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,
并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用
forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

16.JSP的四种范围

答:

JSP 有四种范围,分别为Page、Request、Session、Application。
http://hi.baidu.com/bruce203/blog/item/1bc5f82a5cff71f3e7cd4084.html

17.ArrayList类与Vector区别

答:

一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

18.java中有几种类型的流?JDK为每种类型的流提供了一些抽象方法以供继承,请说出他们分别是哪些类?
答:

字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于Reader Writer。
在java.io包中还有许多其他的流,低层流与调层流,高层流主要是为了提高性能和使用方便。

19.常见的接口,包,类
答:

常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer
常用的包:java.lang java.awt java.io java.util java.sql
常用的接口:Remote List Map Document NodeList

20.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
答:

会执行,在return前执行。
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

编程题:

写一个Singleton出来
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
  private Singleton(){}
  //在自己内部定义自己一个实例,是不是很奇怪?
  //注意这是private 只供内部调用
  private static Singleton instance = new Singleton();
  //这里提供了一个供外部访问本class的静态方法,可以直接访问  
  public static Singleton getInstance() {
    return instance;   
   }

}
第二种形式:
public class Singleton {
  private static Singleton instance = null;
  public static synchronized Singleton getInstance() {
  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
  //使用时生成实例,提高了效率!
  if (instance==null)
    instance=new Singleton();
return instance;   }
}
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些

 最大数和最小数之间的和。
public class TestSum {
public static void main(String[] args) {
int a[] ={12,3,2,4,5,49};
Arrays.sort(a);
int sum=0;
for (int i = 1; i < a.length-1; i++) {
sum += a[i];
}
System.out.println(sum);
}
}

验证用户名条件:1.长度必须在3-15之间2.必须以字母开头,等

答:好像是用到正则表达式

写一个方法,验证一个字符串。正序和倒序是否相等。例如(1234567654321)

冒泡排序

ajax的核心

sock通信技术

JDBC配置
输出一个文件下的所有文件
servlet运行机制

什么是事务

get.post的区别 

数据库:

创建表(主建索引)分页查询;id为5的内容更新成id为8的内容;最新发表的五条信息;

mvc的理解,好处

struts2好处,运行原理。

反射机制。

如何创建拦截器

数据库的优化

由于时间有限,以上答案仅供参考,下面还有好多问题未总结答案,如果您有时间,希望您能把我总结下!谢谢 

posted @ 2012-05-23 16:59  子灏  阅读(365)  评论(1编辑  收藏  举报

传说中的阿里云服务