您的位置:首页 > 职场人生

java 面试的一些总结

2013-11-07 09:29 435 查看
邮箱验证  

ajax  用jquery编写的ajax,用于注册时的邮箱验证,运用ajax的局部刷新技术,与服务器进行交互,

      用注册的email与服务端传递来的email进行比较,用的话输出为1表示不可用,没有则输出为0表      示可用

----------------------------------

jquery: jquery是一个javascript库,简化了js的编程。jquery可以隐藏当前html元素,<p>元素,         class="test",id=test的元素,改变html和css操作。jquery有元素选择器、属性选择器、样式选择器。jquery核心是jquery的事件处理方法。当jquery与js库函数使用符号冲突时,比如都用$时,jquery用 var jq = jQuery.noConfilct() jq代替$,noConfilct()方法代替。

---------------------------------------

ognl 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和$这三个符号的使用

parameters 包含当前HTTP请求参数的Map #parametersid[0]作用相当于request.getParameter("id")

request 包含当前HttpServletRequest的属性(attribute)的Map #request.userName相当于request.getAttribute("userName")

session 包含当前HttpSession的属性(attribute)的Map #session.userName相当于session.getAttribute("userName")

application 包含当前应用的ServletContext的属性(attribute)的Map #application.userName相当于application.getAttribute("userName")

attr 用于按request > session > application顺序访问其属性(attribute) #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止

用于过滤和投影(projecting)集合,如books.{?#this.price<100};

构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。

------------------------

javabeans Javabean 就是一个类,这个类就定义一系列 get<Name> 和 set<Name> 方法。 Javabean 就是为了和 jsp 页面传数据化
    简交互过程而产生的。

使用 javabean 和不用 javabean 的区别:
一个 javabean 就是为 jsp 页面上的元素一一开辟一个空间,然后根据需要赋值、读值。而如果不用 javabean ,就直接使用 HttpServlet 的 request 对象:只在 jsp 页面间传递获取数据:tring name=req.getParameter(“name”);javabean在jsp中<jsp:useBean> <jsp:setProperty>标记 ,在jsp中生命周期只相当于一个request,当request转交给另一个对象时,它的生命周期就已重新开始。
javabean是一种组件,可以实现代码的重复利用,易于维护。特点:执行java.io.Serializable接口,提供无参构造器,提供get set方法,访问属性。

----------------

pojo 普通javaBean

-------------------------------------------------

json  javascript对象语言表示法,是轻量级的文本数据交换格式,有自己的描述,简易方便,json数       据可以通过ajax进行传输。语法:数据有逗号分隔,花括号保存对象,方括号保存数组。json的值可以是数字、字符串、逻辑值、数组、对象、null。文件类型是.json。

----------------------------------------------

 

字节流(inputStream outputStream)  字节流直接操作在文件中,输出结果会直接在文件中

        把字节写入文件中,需要四个步骤,1、使用File类找到一个文件 File f = new File("d:"+File.separator+"test.txt"); 2、通过子类实现父类对象OutputStream out =null;
out = new FileOutputStream(f);
3、进行操作 String str = "Hello World!!!";
byte b[] = str.getBytes();//把字符转化为数组
out.write(b); 4、关闭输出流 out.close();

package org;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class OutputStreamDemo05{

          public static void main(String[] args) throws Exception{
File f = new File("d:"+File.separator+"test.txt");
OutputStream out =null;
out = new FileOutputStream(f);
String str = "Hello World!!!";
byte b[] = str.getBytes();//把字符转化为数组
out.write(b);
out.close();

}

}

字符流 (reader writer)  字符流在操作时,会先把结果存在缓存中,然后再存到文件中
package org;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class OutputStreamDemo03{

          public static void main(String[] args) throws Exception{
File f = new File("d:"+File.separator+"test.txt");
Writer out =null;
out = new FileWriter(f);
String str = "Hello World!!!";

out.write(str);//这一步只是把字符流写到缓存中
out.flush();//没有这一步,是不能把字符流,写到文件中
out.close;

}

}

--------------------------------------

java序列化 

------------------------------------

 递归  就是程序自身的调用。

package zzia;

public class Digui {
public static int jie(int n){
if(n==0||n==1){
return n;
}else{

return n*jie(n-1);
}
}
public static void main(String[] args){
System.out.println(jie(5));
System.out.println(1*2*3*4*5);

}

}

-----------------

 延迟加载  
访问一个属性时,如果他有过多的外连接,而我们只需要其中一个时,就需要用到延迟加载,只访问其中一个属性。

------------------------

数据库座连接右连接   
左连接(left join)where只影响右表,右连接(righr join)where只影响左表。
select * from tb1 Left Join tb2 where tb1.id = tb2.id
左连接后的检索结果只显示tb1的所有数据和tb2中满足where条件的数据
select * from tb1 Right Join tb2 where tb1.id = tb2.id
检索结果是tb2中的所有数据和tb1中满足where条件的数据。
inner join 有效连接  显示左右表中都有的信息。
full join  全连接    显示左右表中的所有数据

----------------------------------------

排序   
冒泡排序
package zzia;

public class Maopao {
public static void main(String[] args) {
int array [] = {12,23,2,34};
int arr = array.length;
for(int i=0;i<arr-1;i++){
for(int j=arr-1;j>i;j--){
if(array[j]<array[j-1]){
int tem = array[j];
array[j]= array[j-1];
array[j-1]=tem;
}
}
}
for(int i:array){
System.out.println(i+" ");
}
}

}

---------------------------------------------------

jdbc连接数据库
package jdbctest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
public class Dbtest{
private static String URL="jdbc:oracle:thin:@localhost:XE";
private static String USERNAME="oa";
private static String Password="oa123";
public static Connection getCon(){
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(URL,Username,password);
String sql ="";
pstmt =conn.preparedStatement(sql);
pstmt.excute();
pstmt.close();
}catch(Exception){
e.printStackTrace

}
}
return conn;

}

-----------------------------

测试类

---------------------------------

Spring注解
@Resource (默认Byname)作用相当于@autowired,有两个属性name和type,可以根据两个属性查找,一般来说要比@autowired好。
@autowired (根据类型自动装配) 可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。

----------------------------------------

modeldrvean
ModelDriven背后的机制就是ValueStack。ModelDrivenInterceptor是缺省的拦截器链的一部分,当一个请求经过ModelDrivenInterceptor的时候,在这个拦截器中,会判断当前要调用的Action对象是否实现了ModelDriven接口,如果实现了这个接口,则调用getModel()方法,并把返回值(本例是返回user对象)压入ValueStack。

----------------------------------------------

sql优化
sql语句优化
null 不能用null,因为null中不含索引,查找速度慢
通配符  % like   __
order by 语句
not <> 这些都会降低sql语句的执行效率。

最高效的删除重复记录方法 ( 因为使用了ROWID)例子:  
delete from emp e where e.rowid >(select min(x.rowid) from emp x where x.emp_no = e.emp_no)
用where字句替换having字句;减少对表的查询;使用表别名;用exists代替in;用索引提高效率。

--------------------------------------------------------

int 转换为String类型
int i = 10;
String s = " "+i;
String s = String.valueOf(i);
String s = Integer.toString(i);

------------------------------------------------------------

hibernate:
简单的说 hibernate就是jdbc+缓存:相对来讲jdbc在性能上有优势,而hibernate胜在容易学习和使用,但在用到很复杂的多表查询和复杂的数据库操作时,jdbc要比hibernate有优势。hibernate是封装了jdbc底层数据的访问细节。jdbc使用的是sql语言,它是一种结构化查询语言,不能很好的面向对象,而hibernate使用的是hql,能够很好的面向对象。hibernate会把数据库连接以及对象关系编写在配置文件当中,便于对数据维护和修改。

hibernate使用了缓存,分为一级缓存和二级缓存,一级缓存也就是session,它在查询过一次数据库后,会把数据库信息存放在缓存中,当第二次查询时,会直接从内存中取,加快了查询速度,二级缓存,是把处理信息的数据库语言都经过编译之后存放在sessionfactory,当需要使用时就直接调用,提高效率。hibernate的orm机制把数据之间的关系都通过配置文件加载进去,减少了大量执行sql语句的麻烦。

-----------------------------------------------

struts2:Struts2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。

struts2框架处理步骤:

1、客户端浏览器发出HTTP请求。

2、根据web.xml配置,该请求被FilterDispatcher接收。

3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。

4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。

6、返回HTTP响应到客户端浏览器。

------------------------------------------------------

spring:主要起到解耦合的作用,它的实现主要依靠ioc 和aop。

ioc   控制反转,服务需要实现专门的接口,通过接口,由对象提供这些服务,可以从对象查询依赖性    (例如,需
要的附加服务)通过 JavaBean 的属性(例如 setter 方法)分配依赖性

aop   面向切面编程,它主要是通过配置文件中的切入点切入程序。

---------------------------------------------

反射:

所有的对象都是class的实例    通过class.forName(类名)得到类的实例,通过实例化的newInstance获取类的对象  getMethods 得到方法名  getFileds  得到属性。

Class ownerClass = owner.getClass():得到该对象的Class。

Field field = ownerClass.getField(fieldName):通过Class得到类声明的属性。

Object property = field.get(owner):通过对象得到该属性的实例,如果这个属性是非公有的,这里会报IllegalAccessException。

-----------------------------------------------

接口:

---------------------------------------------------------------------

事务:
事务是访问数据库的一个操作系列,数据库应用系统通过事务集来完成对数据库的存取;

原子性 即不可分割性,事务要么全部被执行,要么就全部不被执行。事务的所有子事务都提交,则数据        库改变状态,如果有一个子事务提交失败,则数据库操作被
回滚,回到执行之前的状态。

一致性  事务的执行使得数据库从一种正确状态转换为令一种正确状态。

隔离性  在事务正确提交之前,不允许把事务对数据的修改提供给其他事物,即在事务正确提交之前,        它的可能结果不能被其它事务查看。

持久性  事务在提交之后,其结果将永久保存在数据库中。

------------------------------------------------------------------

MVC  model模型(数据层 和 业务层)使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。控制器接受用户的请求,并决定应该调用那个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

------------------------------------------------

单例模式:
饿汉式是在单例类的实例在jvm启动时就创建好了,懒汉式则是在第一次访问单例类的实例时才去创建

饿汉式:public class EagerSingleton {  

      

    private static final EagerSingleton instance = new EagerSingleton();  

      

    private EagerSingleton() {  

    }  

      

    public static EagerSingleton getInstance() {  

        return instance;  

    }  

     
}  

懒汉式:需要考虑到同步
public class LazySingleton {  

      

    private static LazySingleton instance = null;  

      

    private LazySingleton() {  

    }  

      

    public static synchronized LazySingleton getInstance() {  

        if (instance == null) {  

            instance = new LazySingleton();  

        }  

          

        return instance;  

    }       

}  

-----------------------------------------------------

synchronized(同步):java关键字,当修饰方法和代码块时,表示同时时刻内最多只有一个线程执行这个代码块。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: