面试基础

一、
1.1、提交中文,接受参数会出现乱码,出现乱码的原因是什么?
1.2、如果使用get方式提交中文,如何保证取到正确的结果?
1.3、如果使用post方式提交中文,如何保证取到正确的结果?
1.4、如何保证jsp页面上显示中文不出现乱码?
1.1    
    Java和JSP文件本身编译时(Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致)
    和Java程序于其他媒介交互产生的乱码问题
1.2
    1.2.1 表单方式get传值乱码:
    修改TOMCAT/conf/server.xml文件
 
     1.2.2 url方式get传值乱码:
    首先对中文参数使用URLEcoder编码为utf-8,然后在request.getParameter("")接收到参数后再使用URLDecoder还原
1.3
    1.3.1 最好通过过滤器实现每个页面都设置为request.setCharacterEncoding("UTF-8")
    1.3.2 接收页面设置request.setCharacterEncoding("UTF-8")
    1.3.3 单个正确的中文字符串:String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;
1.4 jsp的头部将pageEncoding和contentType的charset的编码设置为UTF-8
二.synchronized和lock的异同
所实现的锁功能是一致的,但是 Lock 的功能更为强大一些。
Lock 可以产生多个条件变量,可以实现多个类似于 wait, notifyAll 的等待及唤醒功能。而 synchronized 只有一个条件变量,也就是锁对象的 wait 和 notifyAll
synchronized 也有好处的,比如一些性能监控工具,可以监测到 synchronized 的锁。无法监测到 Lock 的锁定,毕 竟 Lock 的锁定是通过代码实现的,而 synchronized 是在 JVM 层面上实现的。要监控工具能监测到 Lock 的锁定那还需要有一 段时日。
另外,synchronized 在锁定时如果方法块抛出异常,JVM 会自动将锁释放掉,不会因为出了异常没有释放锁造成线程死锁。但是 Lock 的 话就享受不到 JVM 带来自动的功能,出现异常时必须在 finally 将锁释放掉,否则将会引起死锁。Lock 锁的代码结构一般是这样的:
 
lock.lock();
try {
    xxxx;
} finally {
    lock.unlock();
}

三.sleep和wait的区别

sleep是线程被调用时,占着cpu去睡觉,其他线程不能占用cpu,os认为该线程正在工作,不会让出系统资源,
wait是进入等待池等待,让出系统资源,其他线程可以占用cpu,一般wait不会加时间限制,
因为如果wait的线程运行资源不够,再出来也没用,要等待其他线程调用notifyall方法唤醒等待池中的所有线程,才会在进入就绪序列等待os分配系统资源,
sleep是静态方法,是谁掉的谁去睡觉,就算是在main线程里调用了线程b的sleep方法,实际上还是main去睡觉,想让线程b去睡觉要在b的代码中掉sleep
sleep(100L)是占用cpu,线程休眠100毫秒,其他进程不能再占用cpu资源,wait(100L)是进入等待池中等待,交出cpu等系统资源供其他进程使用,
在这100毫秒中,该线程可以被其他线程notify,但不同的是其他在等待池中的线程不被notify不会出来,
但这个线程在等待100毫秒后会自动进入就绪队列等待系统分配资源,

换句话说,sleep(100)在100毫秒后肯定会运行,但wait在100毫秒后还有等待os调用分配资源,所以wait100的停止运行时间是不确定的,但至少是100毫秒。
四.struts2中如何国际化 考虑几种情况 js jsp action 普通java类
1:java内置的国际化 http://www.educity.cn/wenda/64473.html
java内置的国际化,以java.util.ResourceBundle和java.util.Locale两个类为中心,其中 java.util.Locale负责选择合适的语言,
而java.util.ResourceBundle负责根据注入的 java.util.Locale对象来选择国际化信息的来源,返回国际化信息。
package com.capinfotech.util;

import java.util.Locale;
import java.util.ResourceBundle;

public class Language {

    public static void main(String[] args) {
        
        Locale local1= Locale.SIMPLIFIED_CHINESE;
        ResourceBundle bundle1 = ResourceBundle.getBundle("message", local1);
        System.out.println("bundle=" + bundle1.getString("labela"));
        
        Locale enLocal = Locale.US;
        ResourceBundle bundle2 = ResourceBundle.getBundle("message", enLocal);
        System.out.println("enBundle=" + bundle2.getString("labela"));
        
        Locale franceLocal = Locale.FRANCE;
        ResourceBundle franceBundle = ResourceBundle.getBundle("message", franceLocal);
        System.out.println("franceLocal=" + franceBundle.getString("labela"));
        
    }
}
Locale local1= Locale.SIMPLIFIED_CHINESE;
        ResourceBundle bundle1 = ResourceBundle.getBundle("message", local1);
        String message = bundle1.getString("labela");
        String[] params = new String[2];
        params[0] = "Petter";
        params[1] = "20100000000";
        //将参数合成进读出的国际化信息
        String info = MessageFormat.format(message, params);
        System.out.println(info);

2.jsp

    首先包含国际化资源文件message.properties, message_zh_CN.properties, message_en_US.properties

    然后在struts.xml中设置一个常量:<constant name="struts.custom.i18n.resource" value="message" />

<s:text name="labela" />    
    <br>
    <s:text name="labelb" >
        <s:param>ok</s:param>
    </s:text>
    <br>
    <s:i18n name="com.capinfotech.action">
        <s:text name="labela" />
    </s:i18n>
    
    <s:form>
        <s:textfield name="name1" key="labela" />
    </s:form>

3.action

        System.out.println(this.getText("labela"));  //访问默认的国际化信息
        System.out.println(this.getText("labelb", null, "ok")); //访问默认的国际化信息并传入参数值为ok

        ResourceBundle bundle = this.getTexts("message"); //访问名为message的全局国际化信息
        System.out.println(bundle.getString("labela"));

五java中异常处理机制的简单原理和应用

 http://www.blogjava.net/b47617/archive/2006/03/04/33561.html

posted @ 2014-12-22 09:25  苗苗的编程世界  阅读(154)  评论(0编辑  收藏  举报