| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

阿里巴巴校园招聘面试试题合集总结

侯***河

贡献于2014-11-04

字数:15201


1 forward redirect区

1址栏显示说
forward服务器请求资源服务器直接访问目标址URLURL响应容读取然容发浏览器浏览器根知道服务器发送容里址栏原址
redirect服务端根逻辑发送状态码告诉浏览器重新请求址址栏显示新URL
2数享说
forward转发页面转发页面享request里面数
redirect享数
3运方说
forward般户登陆时候根角色转发相应模块
redirect般户注销登陆时返回页面跳转网站等
4效率说
forward高
redirect低


2 servlet方法 doget dopost区
3 ArrayList里装Person类象样根Person类属性年龄排序
4 HashMap键值否意象



面试总结
首先介绍
1        面试官着简历会挑中项目然说出框架流程
2        画出框架流程图会问部分干什
3        针2问题做web项目框架中servlet应部分
4        前两问题牵引出webxml文件配置中属性作
5        spring解
6        spring赖注入方式种(注意spring注入方式赖注入)
7        关事物问题做项目中做事物关事物控制写
8        触发器存储程说点
9        项目开发中果遇问题知道该什技术解决解决该查
10    三年项目开发验觉优势方
11    会问公司什解机会问问题


1介绍做项目擅长技术
2框架擅长?
3知道MVC框架?
4常什样网站什样算规划
5喜欢技术(喜欢)举例子说明喜欢技术
6前项目中没加班频率加班时间长度加班法
7前项目中做什容SE级开发
8项目组样做项目没详细设计做?
9Struts什版
10Struts2?Struts1什区
11SpringAOP解项目方面
12前项目规模
                          
1     首先介绍
2     问熟悉项目
3     画出STRUTS框架响应jsp流程图
4     针2问题做web项目框架中servlet应部分
5     前两问题牵引出webxml文件配置中属性作
6     spring解
7     spring赖注入方式种(注意spring注入方式赖注入)
8     关事物问题做项目中做事物关事物控制写
9     Struts底层相关知识
10     项目开发中果遇问题知道该什技术解决解决该查
11     三年项目开发验觉优势方
12     会问公司什解机会问问题


1     首先介绍
2     框架中较喜欢
3     问做项目中收获收获什
4     ibatis Hibernate 区
5     servlet 生命周期
6     spring 两特性(AOP IOC)
7     说理解J2EE什
8     什说JBOSS 符合J2EE求TOMCAT 符合J2EE求
9     Hibernate 优点缺点
10     认项目中重什
11     分务感完成困难会办
12     支付宝什问

次杭州支付宝面试面试官开发框架方面技术问少部分根问项目延伸Sql UML等问题简历项目中果快钱项目准备快钱项目非常感兴趣问题:

1        首先面试官介绍然介绍
2        家公司?年出生?年毕业?工作年?问题回答简历样简历没作假回答定考虑
3        协力员工法?
4        生规划职业规划样?
5        项目加班什法?加班极限少?
6        熟悉新框架需长时间?(支付宝框架)
7        说出认影响深项目说出原
8        Oracle中分页Sql写?
9        简单懂计算机说明java态
10    说知道java设计模式
11    strutsspring中应写java设计模式?
12    说spring代理模式画spring代理模式类图
13    快钱项目中担模块根回答展开问题
14    宝钢物流项目入库模块开发中致类?接口?画UML图
问题问题根回答延伸
                                
1 简单介绍
2 根介绍提问
3 mvc开发模式模式
4 生规划
5 业余爱
6 做项目中做模块
7 做项目
总结根面试官喜欢面试官喜欢做事计划


 Java集合框架解? 否说说常类? 
 
 说说HashtableHashMap区: 源代码级区呢?
 
 时List? (ArrayListLinkedList)ArrayListLinkedList区?
 
 ArrayList特点部容器扩充?
 
 Properties类特点? 线程安全 
 

 时框架? (提Struts2)
 
 请说Struts2初始化?类创建?(源代码角度出发)
 
 解反射什方式动态创建象?(提CGLIB…… 会接着问CGLIB揪心中……结果没问)
 
 请说Struts2 Action交Spring托?单例例? 页面表单象例单例?
 
 请说业务层象单例例?
 
 请说Struts2源代码中设计模式?
 

 
 请说觉熟悉技术特点? (提发编程)
 
 请说线程安全出现原? 
 
 请说线程池中断策略(4)? 什特点?
 
 请说Tomcat配置应端口配置? 配置数源? 实现动态部署?
 
 请说Java常优化? 
 
 解新Servlet规范? 简单说?(提推)
 
 请说推实现?
 
 线程安全StringBufferStringBuilder区? 扩充部数组容量? (源代码)
 
 请说Tomcat中设计模式?(提观察者模式)
 
 否说说Java反射相关优化机制? (说太清楚…… 说没关系 )
 
 请说Mysql常优化策略?
 
 前提推知识面较感兴趣说说时什书解什技术范畴
 (首先提SOA说解未趋势提云计算说定解未深究)
 
 
 职业方面问题?
 
 觉潜力? 团队中位置? 觉团队中差距?花少时间赶?
 
 阿里巴巴什疑问? (囧问阿里巴巴牛时互动?意指培训话没说清楚……囧……)

PS面时候问题整理里面纯粹仅限浅见果错误希位指点二

· Java集合框架解? 否说说常类? 
Java集合框架类图:


 
常类:
HashMapHashtableHashSetArrayListVectorLinkedListCollectionsArrays

· 说说HashtableHashMap区(源代码级)

       1明显区Hashtable 步(方法synchronized)HashMap
       2HashMap继承AbstractMapHashtable继承Dictionary 前者Map骨干 部已实现Map需           做部分工作 子类需实现少量方法具Map项特性者部抽象方法需           实现类作实现该类已时
        3两者检测否含key时hash算法致HashMap部需keyhash码重新计算边检测                    Hashtable直接利key身hash码做验证
HashMap
 
Java代码
1 int hash  (key  null)  0  hash(keyhashCode())   
2   
3 static int hash(int h) {   
4         h ^ (h >>> 20) ^ (h >>> 12)   
5         return h ^ (h >>> 7) ^ (h >>> 4)   
6     }  
Java代码
1 int hash  (key  null)  0  hash(keyhashCode())   
2   
3 static int hash(int h) {   
4         h ^ (h >>> 20) ^ (h >>> 12)   
5         return h ^ (h >>> 7) ^ (h >>> 4)   
6     }  
int hash (key null) 0 hash(keyhashCode())

static int hash(int h) {
h ^ (h >>> 20) ^ (h >>> 12)
return h ^ (h >>> 7) ^ (h >>> 4)
}
 
  Hashtable:
 
Java代码
1 int hash  keyhashCode()  
Java代码
1 int hash  keyhashCode()  
int hash keyhashCode()
 
  4两者初始化容量致HashMap部 16*075 Hashtable 11*075
HashMap
 
Java代码
1 static final int DEFAULT_INITIAL_CAPACITY  16   
2 static final float DEFAULT_LOAD_FACTOR  075f   
3 public HashMap() {   
4      thisloadFactor  DEFAULT_LOAD_FACTOR   
5      threshold(int)(DEFAULT_INITIAL_CAPACITY*DEFAULT_LOAD_FACTOR)   
6      table  new Entry[DEFAULT_INITIAL_CAPACITY]   
7      init()   
8 }      
9 ………………………………  
Java代码
1 static final int DEFAULT_INITIAL_CAPACITY  16   
2 static final float DEFAULT_LOAD_FACTOR  075f   
3 public HashMap() {   
4      thisloadFactor  DEFAULT_LOAD_FACTOR   
5      threshold(int)(DEFAULT_INITIAL_CAPACITY*DEFAULT_LOAD_FACTOR)   
6      table  new Entry[DEFAULT_INITIAL_CAPACITY]   
7      init()   
8 }      
9 ………………………………  
static final int DEFAULT_INITIAL_CAPACITY 16
static final float DEFAULT_LOAD_FACTOR 075f
public HashMap() {
thisloadFactor DEFAULT_LOAD_FACTOR
threshold(int)(DEFAULT_INITIAL_CAPACITY*DEFAULT_LOAD_FACTOR)
table new Entry[DEFAULT_INITIAL_CAPACITY]
init()
}
………………………………
 
 Hashtable
 
Java代码
1 public Hashtable() {   
2     this(11 075f)   
3 }   
4   
5  public Hashtable(int initialCapacity float loadFactor) {   
6            
7     thisloadFactor  loadFactor   
8     table  new Entry[initialCapacity]   
9     threshold  (int)(initialCapacity * loadFactor)   
10     }     
Java代码
1 public Hashtable() {   
2     this(11 075f)   
3 }   
4   
5  public Hashtable(int initialCapacity float loadFactor) {   
6            
7     thisloadFactor  loadFactor   
8     table  new Entry[initialCapacity]   
9     threshold  (int)(initialCapacity * loadFactor)   
10     }     
public Hashtable() {
this(11 075f)
}

public Hashtable(int initialCapacity float loadFactor) {

thisloadFactor loadFactor
table new Entry[initialCapacity]
threshold (int)(initialCapacity * loadFactor)
}
 
   实续区应该 里先列出4点
 
· 时ArrayListLinkedList外List?
ArrayListLinkedList区?
 
事实List2 外Vector
ArrayListLinkedList区:
 
1 毫疑问第点两者部数结构 ArrayList部元素容器Object数组
LinkedList部实际链表数结构部类表示链表
Java代码
1 (ArrayList)   
2 private transient Object[] elementData    
3   
4 ………………………………………………………………………………   
5   
6 (LinkedList)   
7 private transient Entry header  new Entry(null null null)链表头    
8   
9 部链表类   
10 private static class Entry {   
11     E element 数元素   
12     Entry next  前驱   
13     Entry previous驱   
14     Entry(E element Entry next Entry previous) {   
15         thiselement  element   
16         thisnext  next   
17         thisprevious  previous   
18     }   
19 }     
Java代码
20 (ArrayList)   
21 private transient Object[] elementData    
22   
23 ………………………………………………………………………………   
24   
25 (LinkedList)   
26 private transient Entry header  new Entry(null null null)链表头    
27   
28 部链表类   
29 private static class Entry {   
30     E element 数元素   
31     Entry next  前驱   
32     Entry previous驱   
33     Entry(E element Entry next Entry previous) {   
34         thiselement  element   
35         thisnext  next   
36         thisprevious  previous   
37     }   
38 }     
(ArrayList)
private transient Object[] elementData

………………………………………………………………………………

(LinkedList)
private transient Entry header new Entry(null null null)链表头

部链表类
private static class Entry {
E element 数元素
Entry next 前驱
Entry previous驱
Entry(E element Entry next Entry previous) {
thiselement element
thisnext next
thisprevious previous
}
}
 
2 两者父类决定两者存储形式 ArrayList继承 AbstractListLinkedList继承AbstractSequentialList 两者实现List骨干结构前者访问形式趋 机访问数存储(数组)者趋 连续访问数存储(链接列表)
Java代码
1 public class ArrayList extends AbstractList      
2   
3 public class LinkedList extends AbstractSequentialList      
Java代码
4 public class ArrayList extends AbstractList      
5   
6 public class LinkedList extends AbstractSequentialList      
public class ArrayList extends AbstractList

public class LinkedList extends AbstractSequentialList
 
3 两者效率问题 ArrayList基数组实现毫疑问直接标索引索引数快插入元素设计数组元素移动者数组扩充插入元素慢LinkedList基链表结构插入元素需改变插入元素前项指插入数快索引元素需前遍历索引元素慢
· ArrayList特点部容器扩充?
点谈ArrayList特点里略重点部容器扩充:
Java代码
1 public void ensureCapacity(int minCapacity) {   
2         modCount++   
3         int oldCapacity  elementDatalength   
4         if (minCapacity > oldCapacity) {   
5             Object oldData[]  elementData   
6              里扩充原概 60   
7             int newCapacity  (oldCapacity * 3)  2 + 1   
8             if (newCapacity < minCapacity)   
9                 newCapacity  minCapacity   
10             创建指定新数组覆盖原数组   
11             elementData  ArrayscopyOf(elementData newCapacity)   
12         }   
13     }     
Java代码
1 public void ensureCapacity(int minCapacity) {   
2         modCount++   
3         int oldCapacity  elementDatalength   
4         if (minCapacity > oldCapacity) {   
5             Object oldData[]  elementData   
6              里扩充原概 60   
7             int newCapacity  (oldCapacity * 3)  2 + 1   
8             if (newCapacity < minCapacity)   
9                 newCapacity  minCapacity   
10             创建指定新数组覆盖原数组   
11             elementData  ArrayscopyOf(elementData newCapacity)   
12         }   
13     }     
public void ensureCapacity(int minCapacity) {
modCount++
int oldCapacity elementDatalength
if (minCapacity > oldCapacity) {
Object oldData[] elementData
里扩充原概 60
int newCapacity (oldCapacity * 3) 2 + 1
if (newCapacity < minCapacity)
newCapacity minCapacity
创建指定新数组覆盖原数组
elementData ArrayscopyOf(elementData newCapacity)
}
}
 
· Properties类特点? 线程安全 
Properties 继承Hashtable线程安全 特点 表示持久属性集保存流中者流中加载属性列表键应值字符串 中常方法load()方法流中加载属性:
Java代码
public synchronized void load(InputStream inStream) throws IOException {   
         输入流转换成LineReader   
        load0(new LineReader(inStream))   
    }   
  
    private void load0(LineReader lr) throws IOException {   
        char[] convtBuf  new char[1024]   
        int limit   
        int keyLen   
        int valueStart   
        char c   
        boolean hasSep   
        boolean precedingBackslash   
         行行处理   
        while ((limit  lrreadLine()) > 0) {   
            c  0   
            keyLen  0   
            valueStart  limit   
            hasSep  false   
            precedingBackslash  false   
             面2循环处理keyvalue   
            while (keyLen < limit) {   
                c  lrlineBuf[keyLen]   
                 need check if escaped   
                if ((c  '' || c  '') && precedingBackslash) {   
                    valueStart  keyLen + 1   
                    hasSep  true   
                    break   
                } else if ((c  ' ' || c  '\t' || c  '\f')   
                        && precedingBackslash) {   
                    valueStart  keyLen + 1   
                    break   
                }   
                if (c  '\\') {   
                    precedingBackslash  precedingBackslash   
                } else {   
                    precedingBackslash  false   
                }   
                keyLen++   
            }   
  
            while (valueStart < limit) {   
                c  lrlineBuf[valueStart]   
                if (c  ' ' && c  '\t' && c  '\f') {   
                    if (hasSep && (c  '' || c  '')) {   
                        hasSep  true   
                    } else {   
                        break   
                    }   
                }   
                valueStart++   
            }   
  
            String key  loadConvert(lrlineBuf 0 keyLen convtBuf)   
            String value  loadConvert(lrlineBuf valueStart limit   
                     valueStart convtBuf)   
             存入部容器中里Hashtable 部方法   
            put(key value)   
        }   
    }  
Java代码
public synchronized void load(InputStream inStream) throws IOException {   
         输入流转换成LineReader   
        load0(new LineReader(inStream))   
    }   
  
    private void load0(LineReader lr) throws IOException {   
        char[] convtBuf  new char[1024]   
        int limit   
        int keyLen   
        int valueStart   
        char c   
        boolean hasSep   
        boolean precedingBackslash   
         行行处理   
        while ((limit  lrreadLine()) > 0) {   
            c  0   
            keyLen  0   
            valueStart  limit   
            hasSep  false   
            precedingBackslash  false   
             面2循环处理keyvalue   
            while (keyLen < limit) {   
                c  lrlineBuf[keyLen]   
                 need check if escaped   
                if ((c  '' || c  '') && precedingBackslash) {   
                    valueStart  keyLen + 1   
                    hasSep  true   
                    break   
                } else if ((c  ' ' || c  '\t' || c  '\f')   
                        && precedingBackslash) {   
                    valueStart  keyLen + 1   
                    break   
                }   
                if (c  '\\') {   
                    precedingBackslash  precedingBackslash   
                } else {   
                    precedingBackslash  false   
                }   
                keyLen++   
            }   
  
            while (valueStart < limit) {   
                c  lrlineBuf[valueStart]   
                if (c  ' ' && c  '\t' && c  '\f') {   
                    if (hasSep && (c  '' || c  '')) {   
                        hasSep  true   
                    } else {   
                        break   
                    }   
                }   
                valueStart++   
            }   
  
            String key  loadConvert(lrlineBuf 0 keyLen convtBuf)   
            String value  loadConvert(lrlineBuf valueStart limit   
                     valueStart convtBuf)   
             存入部容器中里Hashtable 部方法   
            put(key value)   
        }   
    }  
public synchronized void load(InputStream inStream) throws IOException {
输入流转换成LineReader
load0(new LineReader(inStream))
}

private void load0(LineReader lr) throws IOException {
char[] convtBuf new char[1024]
int limit
int keyLen
int valueStart
char c
boolean hasSep
boolean precedingBackslash
行行处理
while ((limit lrreadLine()) > 0) {
c 0
keyLen 0
valueStart limit
hasSep false
precedingBackslash false
面2循环处理keyvalue
while (keyLen < limit) {
c lrlineBuf[keyLen]
need check if escaped
if ((c '' || c '') && precedingBackslash) {
valueStart keyLen + 1
hasSep true
break
} else if ((c ' ' || c '\t' || c '\f')
&& precedingBackslash) {
valueStart keyLen + 1
break
}
if (c '\\') {
precedingBackslash precedingBackslash
} else {
precedingBackslash false
}
keyLen++
}

while (valueStart < limit) {
c lrlineBuf[valueStart]
if (c ' ' && c '\t' && c '\f') {
if (hasSep && (c '' || c '')) {
hasSep true
} else {
break
}
}
valueStart++
}

String key loadConvert(lrlineBuf 0 keyLen convtBuf)
String value loadConvert(lrlineBuf valueStart limit
valueStart convtBuf)
存入部容器中里Hashtable 部方法
put(key value)
}
}
 LineReader类Properties部类:
Java代码
class LineReader {   
        public LineReader(InputStream inStream) {   
            thisinStream  inStream   
            inByteBuf  new byte[8192]   
        }   
  
        public LineReader(Reader reader) {   
            thisreader  reader   
            inCharBuf  new char[8192]   
        }   
  
        byte[] inByteBuf   
        char[] inCharBuf   
        char[] lineBuf  new char[1024]   
        int inLimit  0   
        int inOff  0   
        InputStream inStream   
        Reader reader   
  
        **  
         * 读取行  
         *   
         * @return  
         * @throws IOException  
         *  
        int readLine() throws IOException {   
            int len  0   
            char c  0   
            boolean skipWhiteSpace  true 空白   
            boolean isCommentLine  false 注释   
            boolean isNewLine  true 否新行   
            boolean appendedLineBegin  false 加 行开始   
            boolean precedingBackslash  false 反斜杠   
            boolean skipLF  false   
            while (true) {   
                if (inOff > inLimit) {   
                     输入流中读取定数量字节存储缓区数组inCharBufinByteBuf中里区分字节流字符流   
                    inLimit  (inStream  null)  readerread(inCharBuf)   
                             inStreamread(inByteBuf)   
                    inOff  0   
                     读取空   
                    if (inLimit < 0) {   
                        if (len  0 || isCommentLine) {   
                            return 1   
                        }   
                        return len   
                    }   
                }   
                if (inStream  null) {   
                     字节流需ISO88591解码   
                    c  (char) (0xff & inByteBuf[inOff++])   
                } else {   
                    c  inCharBuf[inOff++]   
                }   
  
                if (skipLF) {   
                    skipLF  false   
                    if (c  '\n') {   
                        continue   
                    }   
                }   
                if (skipWhiteSpace) {   
                    if (c  ' ' || c  '\t' || c  '\f') {   
                        continue   
                    }   
                    if (appendedLineBegin && (c  '\r' || c  '\n')) {   
                        continue   
                    }   
                    skipWhiteSpace  false   
                    appendedLineBegin  false   
                }   
                if (isNewLine) {   
                    isNewLine  false   
                    if (c  '#' || c  '') {   
                         注释行忽略   
                        isCommentLine  true   
                        continue   
                    }   
                }   
                 读取真正属性容   
                if (c  '\n' && c  '\r') {   
                     里类似ArrayList部容量扩充字符数组保存读取容   
                    lineBuf[len++]  c   
                    if (len  lineBuflength) {   
                        int newLength  lineBuflength * 2   
                        if (newLength < 0) {   
                            newLength  IntegerMAX_VALUE   
                        }   
                        char[] buf  new char[newLength]   
                        Systemarraycopy(lineBuf 0 buf 0 lineBuflength)   
                        lineBuf  buf   
                    }   
                    if (c  '\\') {   
                        precedingBackslash  precedingBackslash   
                    } else {   
                        precedingBackslash  false   
                    }   
                } else {   
                     reached EOL 文件结束   
                    if (isCommentLine || len  0) {   
                        isCommentLine  false   
                        isNewLine  true   
                        skipWhiteSpace  true   
                        len  0   
                        continue   
                    }   
                    if (inOff > inLimit) {   
                        inLimit  (inStream  null)  readerread(inCharBuf)   
                                 inStreamread(inByteBuf)   
                        inOff  0   
                        if (inLimit < 0) {   
                            return len   
                        }   
                    }   
                    if (precedingBackslash) {   
                        len  1   
                        skipWhiteSpace  true   
                        appendedLineBegin  true   
                        precedingBackslash  false   
                        if (c  '\r') {   
                            skipLF  true   
                        }   
                    } else {   
                        return len   
                    }   
                }   
            }   
        }   
    }     
Java代码
class LineReader {   
        public LineReader(InputStream inStream) {   
            thisinStream  inStream   
            inByteBuf  new byte[8192]   
        }   
  
        public LineReader(Reader reader) {   
            thisreader  reader   
            inCharBuf  new char[8192]   
        }   
  
        byte[] inByteBuf   
        char[] inCharBuf   
        char[] lineBuf  new char[1024]   
        int inLimit  0   
        int inOff  0   
        InputStream inStream   
        Reader reader   
  
        **  
         * 读取行  
         *   
         * @return  
         * @throws IOException  
         *  
        int readLine() throws IOException {   
            int len  0   
            char c  0   
            boolean skipWhiteSpace  true 空白   
            boolean isCommentLine  false 注释   
            boolean isNewLine  true 否新行   
            boolean appendedLineBegin  false 加 行开始   
            boolean precedingBackslash  false 反斜杠   
            boolean skipLF  false   
            while (true) {   
                if (inOff > inLimit) {   
                     输入流中读取定数量字节存储缓区数组inCharBufinByteBuf中里区分字节流字符流   
                    inLimit  (inStream  null)  readerread(inCharBuf)   
                             inStreamread(inByteBuf)   
                    inOff  0   
                     读取空   
                    if (inLimit < 0) {   
                        if (len  0 || isCommentLine) {   
                            return 1   
                        }   
                        return len   
                    }   
                }   
                if (inStream  null) {   
                     字节流需ISO88591解码   
                    c  (char) (0xff & inByteBuf[inOff++])   
                } else {   
                    c  inCharBuf[inOff++]   
                }   
  
                if (skipLF) {   
                    skipLF  false   
                    if (c  '\n') {   
                        continue   
                    }   
                }   
                if (skipWhiteSpace) {   
                    if (c  ' ' || c  '\t' || c  '\f') {   
                        continue   
                    }   
                    if (appendedLineBegin && (c  '\r' || c  '\n')) {   
                        continue   
                    }   
                    skipWhiteSpace  false   
                    appendedLineBegin  false   
                }   
                if (isNewLine) {   
                    isNewLine  false   
                    if (c  '#' || c  '') {   
                         注释行忽略   
                        isCommentLine  true   
                        continue   
                    }   
                }   
                 读取真正属性容   
                if (c  '\n' && c  '\r') {   
                     里类似ArrayList部容量扩充字符数组保存读取容   
                    lineBuf[len++]  c   
                    if (len  lineBuflength) {   
                        int newLength  lineBuflength * 2   
                        if (newLength < 0) {   
                            newLength  IntegerMAX_VALUE   
                        }   
                        char[] buf  new char[newLength]   
                        Systemarraycopy(lineBuf 0 buf 0 lineBuflength)   
                        lineBuf  buf   
                    }   
                    if (c  '\\') {   
                        precedingBackslash  precedingBackslash   
                    } else {   
                        precedingBackslash  false   
                    }   
                } else {   
                     reached EOL 文件结束   
                    if (isCommentLine || len  0) {   
                        isCommentLine  false   
                        isNewLine  true   
                        skipWhiteSpace  true   
                        len  0   
                        continue   
                    }   
                    if (inOff > inLimit) {   
                        inLimit  (inStream  null)  readerread(inCharBuf)   
                                 inStreamread(inByteBuf)   
                        inOff  0   
                        if (inLimit < 0) {   
                            return len   
                        }   
                    }   
                    if (precedingBackslash) {   
                        len  1   
                        skipWhiteSpace  true   
                        appendedLineBegin  true   
                        precedingBackslash  false   
                        if (c  '\r') {   
                            skipLF  true   
                        }   
                    } else {   
                        return len   
                    }   
                }   
            }   
        }   
    }     
class LineReader {
public LineReader(InputStream inStream) {
thisinStream inStream
inByteBuf new byte[8192]
}

public LineReader(Reader reader) {
thisreader reader
inCharBuf new char[8192]
}

byte[] inByteBuf
char[] inCharBuf
char[] lineBuf new char[1024]
int inLimit 0
int inOff 0
InputStream inStream
Reader reader

**
* 读取行
*
* @return
* @throws IOException
*
int readLine() throws IOException {
int len 0
char c 0
boolean skipWhiteSpace true 空白
boolean isCommentLine false 注释
boolean isNewLine true 否新行
boolean appendedLineBegin false 加 行开始
boolean precedingBackslash false 反斜杠
boolean skipLF false
while (true) {
if (inOff > inLimit) {
输入流中读取定数量字节存储缓区数组inCharBufinByteBuf中里区分字节流字符流
inLimit (inStream null) readerread(inCharBuf)
inStreamread(inByteBuf)
inOff 0
读取空
if (inLimit < 0) {
if (len 0 || isCommentLine) {
return 1
}
return len
}
}
if (inStream null) {
字节流需ISO88591解码
c (char) (0xff & inByteBuf[inOff++])
} else {
c inCharBuf[inOff++]
}

if (skipLF) {
skipLF false
if (c '\n') {
continue
}
}
if (skipWhiteSpace) {
if (c ' ' || c '\t' || c '\f') {
continue
}
if (appendedLineBegin && (c '\r' || c '\n')) {
continue
}
skipWhiteSpace false
appendedLineBegin false
}
if (isNewLine) {
isNewLine false
if (c '#' || c '') {
注释行忽略
isCommentLine true
continue
}
}
读取真正属性容
if (c '\n' && c '\r') {
里类似ArrayList部容量扩充字符数组保存读取容
lineBuf[len++] c
if (len lineBuflength) {
int newLength lineBuflength * 2
if (newLength < 0) {
newLength IntegerMAX_VALUE
}
char[] buf new char[newLength]
Systemarraycopy(lineBuf 0 buf 0 lineBuflength)
lineBuf buf
}
if (c '\\') {
precedingBackslash precedingBackslash
} else {
precedingBackslash false
}
} else {
reached EOL 文件结束
if (isCommentLine || len 0) {
isCommentLine false
isNewLine true
skipWhiteSpace true
len 0
continue
}
if (inOff > inLimit) {
inLimit (inStream null) readerread(inCharBuf)
inStreamread(inByteBuf)
inOff 0
if (inLimit < 0) {
return len
}
}
if (precedingBackslash) {
len 1
skipWhiteSpace true
appendedLineBegin true
precedingBackslash false
if (c '\r') {
skipLF true
}
} else {
return len
}
}
}
}
}
 里特实际Properties流中加载属性集合通流中字符者字节分成行行处理

· 请说Struts2初始化?类创建?(源代码角度出发)
(时回答问题思路想应该 说通反射加配置文件做)
问题研究起外写篇专门模块里列出相简单流程续会希时间整理出具体细节 首先Struts2基Xwork框架果仔细Xwork文档会发现初始化程基类: Configuring XWork2 centers around the following classes 1 ConfigurationManager 2 ConfigurationProvider 3 Configuration ConfigurationProvider实现类XmlConfigurationProvider 部面代码
Java代码
 public XmlConfigurationProvider() {   
        this(xworkxml true)   
}  
Java代码
 public XmlConfigurationProvider() {   
        this(xworkxml true)   
}  
public XmlConfigurationProvider() {
this(xworkxml true)
}
 样Struts2初始化样类继承Xwork原类针Struts2做特定制
Java代码
1 public class StrutsXmlConfigurationProvider    
2    extends XmlConfigurationProvider {   
3     public StrutsXmlConfigurationProvi








1 JDK5支持泛型泛型实现应反射API操作泛型变量时泛型起作
2 ClassforName(oracleddddriver)newInstance()?new出实例什作?什newInstance()

文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 积分 [ 获取积分 ]

购买文档

相关文档

阿里巴巴校园招聘面试试题合集总结

1. forward 和 redirect区别1.从地址栏显示来说forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

侯***河 9年前 上传453   0

阿里巴巴校园招聘测试笔试题总结

选择题(每题5分)1. 某校园网用户无法访问外部站点210.102.58.74,管理人员在windows 操作系统下可以使用( )判断故障发生在校园网内还是校园网外。  A. ping 210.102.58.74        B. tracert 210.102.58.74  C. netstat 210.102.58.74          D. a

d***g 9年前 上传614   0

阿里巴巴校园招聘笔试试题(java)

阿里巴巴java笔试java笔试Question 1. (单选)在60年代初石油危机的时候,美国总统肯尼迪要求美国石油公司不要将石油的价格提得太快,但是美国石油公司拒绝了肯尼迪的要求。因此,肯尼迪总统在记者招待会上说:“很久以前,我的父亲告诉我,所有的商人都是见钱眼开的……直到今天我才相信这是真的。”肯尼迪总统的讲话是以下面哪项假设为前提的?1. 美国的企业应该听从政府的

W***Y 10年前 上传424   0

阿里巴巴校园招聘笔试试题(java)

阿里巴巴java笔试java笔试Question 1. (单选)在60年代初石油危机的时候,美国总统肯尼迪要求美国石油公司不要将石油的价格提得太快,但是美国石油公司拒绝了肯尼迪的要求。因此,肯尼迪总统在记者招待会上说:“很久以前,我的父亲告诉我,所有的商人都是见钱眼开的……直到今天我才相信这是真的。”肯尼迪总统的讲话是以下面哪项假设为前提的?1. 美国的企业应该听从政府的

d***7 10年前 上传430   0

阿里巴巴校园招聘阿里云笔试试题题目

1. 有一个文件:c:/c.txt,写java程序把该文件内容复制两遍,追加到c:/c.txt;2. 写正则表达式 1.邮箱 2.数字3. HashMap 改变map类对用户会不会有影响?4. Linux中需查看所有的java进程,用什么命令ps -ef|grep java5. Ajax请求的整个流程AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求

再***人 9年前 上传454   0

2012阿里巴巴校园招聘阿里云C++笔试试题

阿里云C++1、(2分)1)请列出两个线程(或进程)死锁的三个必要条件2)当异常(Exception)发生的时候,智能指针(SmartPointer)的析构函数是被谁调用的?3)一般的台式机硬盘一次随机读写大约需要多少毫秒(0.1ms、1ms、10ms、100ms)?4)除了应用程序的系统调用之外,LinuxKernel中的代码在什么情况下还有机会运行?2、(1分

小***3 12年前 上传396   0

阿里巴巴校园招聘阿里云笔试试题题目

1. 有一个文件:c:/c.txt,写java程序把该文件内容复制两遍,追加到c:/c.txt;2. 写正则表达式 1.邮箱 2.数字3. HashMap 改变map类对用户会不会有影响?4. Linux中需查看所有的java进程,用什么命令ps -ef|grep java5. Ajax请求的整个流程AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求

l***u 10年前 上传538   0

阿里巴巴校园招聘销售类笔试题

阿里巴巴销售类笔试题 数字推理题主要有以下几种题型: 1.等差数列及其变式 例题:1,4,7,10,13,() A.14 B.15 C.16 D.17 答案为C。我们很容易从中发现相邻两个数字之间的差是一个常数3,所以括号中的数字应为16。等差数列是数字推理测验中排列数字的常见规律之一。 例题:3,4,6,9,(),18 A.11 B.12 C.13 D.14

0***1 10年前 上传477   0

2012阿里巴巴校园招聘阿里云C++笔试试题

阿里云C++1、(2分)1)请列出两个线程(或进程)死锁的三个必要条件2)当异常(Exception)发生的时候,智能指针(SmartPointer)的析构函数是被谁调用的?3)一般的台式机硬盘一次随机读写大约需要多少毫秒(0.1ms、1ms、10ms、100ms)?4)除了应用程序的系统调用之外,LinuxKernel中的代码在什么情况下还有机会运行?2、(1分

q***e 11年前 上传481   0

阿里巴巴校园招聘Oracle_DBA笔试题及参考答案

阿里巴巴的Oracle DBA笔试题及参考答案 - 数据库基本概念类 1:pctused and pctfree 表示什么含义有什么作用  pctused与pctfree控制数据块是否出现在freelist中,  pctfree控制数据块中保留用于update的空间,当数据块中的free space小于pctfree设置的空间时,  该数据块从freelist中去掉,当块由于d

E***o 9年前 上传304   0

阿里巴巴校园招聘销售类笔试题

阿里巴巴销售类笔试题 数字推理题主要有以下几种题型: 1.等差数列及其变式 例题:1,4,7,10,13,() A.14 B.15 C.16 D.17 答案为C。我们很容易从中发现相邻两个数字之间的差是一个常数3,所以括号中的数字应为16。等差数列是数字推理测验中排列数字的常见规律之一。 例题:3,4,6,9,(),18 A.11 B.12 C.13 D.14

c***7 11年前 上传546   0

阿里巴巴校园招聘Oracle_DBA笔试题及参考答案

阿里巴巴的Oracle DBA笔试题及参考答案 - 数据库基本概念类 1:pctused and pctfree 表示什么含义有什么作用  pctused与pctfree控制数据块是否出现在freelist中,  pctfree控制数据块中保留用于update的空间,当数据块中的free space小于pctfree设置的空间时,  该数据块从freelist中去掉,当块由于d

f***h 12年前 上传397   0

阿里巴巴校园招聘前端在线笔试

1.你做过的最满意的前端作品?2.你了解哪些新技术?3.你是怎样接触前端的?4.你对你的学校和专业怎么看?5.写一段脚本,实现:当页面上任意一个链接被点击的时候,alert出这个链接在页面上的顺序号,如第一个链接则alert(1), 依次类推;6.现有代码如下:var foo = 1;function main(){ alert(foo);

a***i 8年前 上传456   0

阿里巴巴校园招聘前端在线笔试

1.你做过的最满意的前端作品?2.你了解哪些新技术?3.你是怎样接触前端的?4.你对你的学校和专业怎么看?5.写一段脚本,实现:当页面上任意一个链接被点击的时候,alert出这个链接在页面上的顺序号,如第一个链接则alert(1), 依次类推;6.现有代码如下:var foo = 1;function main(){ alert(foo);

b***b 12年前 上传553   0

毕马威面试招聘——2006校园招聘——员工待遇

员工待遇 咨询人员有 70% 的工作时间都花在出差上。雇员们力图在本地完成业务,但由于客户位于世界各地,所以出差是不可避免的。咨询人员都非常年青,从事大项目的员工的年龄范围在 25-35 岁之间。KPMG 鼓励员工参加社区服务——每个月员工都有四个工作日可从事志愿者工作。一位税务咨询人员说一些办事处内实行弹性工作制。比如他自己,每天从早上 10 点工作到晚上 7 点,以避开交通高峰期。

旮***风 14年前 上传740   0

毕马威面试招聘——2006校园招聘——KPMG招聘流程

KPMG招聘流程:其招聘相对稍晚于其他三家。招聘分四个步骤:1.网上投简历;2.笔试;笔试分两部分。第一部分是数学推理,中文,35分钟,35道题。均是加减乘除运算,很简单但时间比较紧。第二部分就是四大基本都会考的verbal test(英文阅读),类似于判断,一共给了12段话,付了32个选择题,让你根据原文进行判断选择。3.第一轮面试;一面问一些很basic的问题

d***e 14年前 上传717   0

美的集团2008年校园招聘面试题库使用指南

美的集团2008年校园招聘面试题库使用指南益言普道咨询服务有限公司Performance Consulting International - China2020年10月28日使用指南一、题库设计目的根据美的集团在2008校园招聘工作中提出的工作目标:1. 严谨——所选择的甄选工具及甄选流

梦***猪 14年前 上传623   0

宝洁招聘:宝洁的招聘流程及面试题

宝洁招聘:宝洁的招聘流程及面试题  宝洁公司良好的薪金制度和巨大的发展空间,让“宝洁”成为大学生心目中向往的公司。而同时宝洁公司完善的选拔制度也得到商界人士的首肯。如何进入宝洁这样的机构,让我们来熟悉它的招聘流程。  宝洁的校园招聘程序  1.前期的广告宣传。  2.邀请大学生参加其校园招聘介绍会。  3.网上申请。  从2002年开始,宝洁将原来的填写邮寄申请表改为网上申请。毕业生通过访问

n***7 10年前 上传674   0

阿里巴巴2014校园招聘笔试题及参考答案-研发工程师-哈尔滨站

注:答案仅供参考2014哈尔滨阿里笔试题1. 单选题1. 假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数A: h(K)=K/N;B: h(K)=1;C: h(K)=K mod N;D: h(K)=(K+rand(N)) mod N, rand(N)返回0到N-1的整数答案:C2. 下面排序算法中,初始数据集的排列顺序对算法的性能无影响的是:

s***3 9年前 上传421   0

阿里巴巴集团2014校园招聘系统工程师北京站笔试题

阿里巴巴集团 2014年秋季校园招聘系统工程师 北京 笔试卷 第一部分 单选题(前10题,每题2分;后10题,每题3分;共50分。选对得满分,选错倒扣一分,不选得0分。)1. 字符串“alibaba”有 个不同的排列。A. 5040 B. 840 C. 14 D.420

对***是 10年前 上传416   0

阿里巴巴2014秋季校园招聘-软件研发工程师笔试题-文字版

1. 单选题1. 假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数          A: h(K)=K/N;          B: h(K)=1;          C: h(K)=K mod N;          D: h(K)=(K+rand(N)) mod N, rand(N)返回0到N-1的整数答案:D2. 下面排序算法中,初始数据集的

j***s 9年前 上传319   0

阿里巴巴集团2014校园招聘系统工程师北京站笔试题

阿里巴巴集团 2014年秋季校园招聘系统工程师 北京 笔试卷 第一部分 单选题(前10题,每题2分;后10题,每题3分;共50分。选对得满分,选错倒扣一分,不选得0分。)1. 字符串“alibaba”有 个不同的排列。A. 5040 B. 840 C. 14 D.420

z***3 10年前 上传542   0

阿里巴巴2014校园招聘笔试试题-系统工程师-北京站

阿里巴巴 2014年校招笔试题本文档由香当网(https://

f***q 10年前 上传496   0

阿里巴巴2014校园招聘笔试试题-软件研发工程师+答案

阿里巴巴2014秋季校园招聘-软件研发工程师笔试题1. 单选题1. 假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数 A: h(K)=K/N; B: h(K)=1; C: h(K)=K mod N; D: h(K)=(K+rand(N)) mod N, rand(N)返回0到N-1的

微***起 10年前 上传371   0

2013年阿里巴巴校园招聘笔试试题研发工程师

第一部分 单选题(前10题,每题2分;后10题,每题3分,共50分。选对得满分,选错倒扣1分,不选得0分)1.12345*12345 1105266261所采用的是多少进制的计算?()A、2进制 B、8进制 C、10进制 D、16进制2. 关于HTTP协议的说明,一下哪项是错误的?()A、在CS模式下,作为一种request-response协议B、无状态,对每一个

y***s 11年前 上传363   0