通过对这几天笔试和面试的经历,真的感受到之前知识学得不够扎实,很多问题一问都是一知半解的。
绿藤笔面试,绿藤的笔试题目还是有点深度的,第一题是对String字符串的理解:</b>
1、 String的内容值不能更改,但String的引用值(内存地址)可以改变。
2、 如果两个字符串的内容是相同的,则它们的引用变量相同(它们指向同一个内存地址)。
3、 ==:判断两个变量值是否相同
3.1、基本变量:判断两个变量值是否相同
3.2、引用变量:判断两个对象的地址是否相同
4、equals:判断两个字符串对象的内容是否相同。不管其指向有多少层次,其最终比较的是字符串的内容。
5、字符串直接赋值和new对象赋值的异同:字符串直接赋值是字符串对象直接指向数据区域的内容地址,而通过创建对象赋值的字符串对象,会先在堆内存中创建一块区域,
指向数据区域的内容地址,并存放该数据内容的地址,而字符串变量则指向堆内存中新创建的区域,并存放该地址。
StringBuffer类
1、 该类所表示的是内容可以修改的,其对象创建之后,所保存的的字符串内容和长度均可以修改。
2、 String和StringBuffer的区别:String的内容无法更改,StringBuffer提供了增删改的功能。其内容和长度皆可更改
第二题是数据结构方面的,对广度优先算法的一个应用。
广度优先算法是访问某个顶点v,接着依次访问顶点v所有未被访问的邻接顶点w1,w2,w3...,咱访问顶点w1,w2,w3...的所有未被访问的其他邻接顶点,如此反复执行,知道访问完图中所有顶点。
深度优先搜索算法:访问某个顶点v,接着寻找v的另一个未被访问的邻接顶点w访问,如此反复执行,走过一条较长路径到达最远顶点;若顶点v没有未被访问的其他邻接顶点,则回到前一个被访问顶点,再寻找其他访问路径。
第三题 复制一个对象及其状态的实现过程。
重写Object类的clone()方法
1. public Object clone(){
2. Book b = null;
3. try{
4. b = (Book)super.clone();
5. }catch(CloneNotSupportedException e){
6. e.printStackTrace();
7. }
8. b.author = (Person)author.clone();
9. return b;
10. }
第四题 向数据库中提交SQL 1、Statement JDBC向数据库传递SQL语句的代表对象,使用Connection的createStatement()得到Statement类型的对象。 2、PreparedStatement 预编译Statement,更高效地执行SQL语句,可以使用“?”占位符。 3、CallableStatement 专门用来执行数据库函数和存储过程的Statement
第五题什么是会话跟踪;首先什么是会话?WEB应用中的会话是指一个客户端浏览器与WEB服务器之间连续发生的一系列请求和相应过程。 [java] view plaincopyprint? 什么是会话状态?WEB应用的会话状态是指WEB服务器与浏览器在会话过程中产生的状态信息,WEB服务器能够把属于同一个会话中的一系列的请求和响应过程关联起来。会话状态的实现过程:
浏览器与web服务器的会话过程必须是有状态的,即web服务器程序在处理浏览器的下一个请求时,需要知道对该浏览器前面发出的一些请求的处理结果
HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的 ,浏览器的每一次请求都是完全孤立的
WEB服务器端程序要能从大量的请求消息中区分出哪些请求消息属于同一个会话,即能识别出来自同一个浏览器的访问请求,这需要浏览器对其发出的每个请求消息都进行标识,属于同一个会话中的请求消息都附带同样的标识号,而属于不同会话的请求消息总是附带不同的标识号,这个标识号就称之为会话ID(SessionID)。
会话ID可以通过一种称之为Cookie的技术在请求消息中进行传递,也可以作为请求URL的附加参数进行传递。会话ID是WEB服务器为每客户端浏览器分配的一个唯一代号,它通常是在WEB服务器接收到某个浏览器的第一次访问时产生,并且随同响应消息一道发送给浏览器。
会话过程由WEB服务器端的程序开启,一旦开启了一个会话,服务器端程序就要为这个会话创建一个独立的存储结构来保存该会话的状态信息,同一个会话中的访问请求都可以且只能访问属于该会话的存储结构中的状态信息。
第一次访问——>web服务器,产生一个cookie封装响应消息:响应消息头字段 Set-Cookie——>客户端浏览器 cookie信息保存在客户端
以后客户端浏览器再向web服务器提交请求:::消息头Cookie封装在本地文件保存的cookie
第六题 java里面是否支持多继承,如果不能是否能模拟实现多继承?
- Create an interface with all the same method prototypes as the base class you will be extending.
- Create a class that implements the interface created in step 1 and extends the base class.
- In the child class, implement the interface created in step 1 and create a private instance of the class defined in step 2. In all the methods defined in the interface, simply call the
- corresponding method in the class created in step 2.