本文共 6124 字,大约阅读时间需要 20 分钟。
来源于MLDN:
1.垃圾回收的优点和原理。
将无用的对象空间进行释放。两种回收:自动回收和手动回收。手动回收实际上就是调用System.gc(),调用此方法于调用了Runtime.getRuntime().gc()方法。
2.Error与Exception的区别。
Error由JVM进行处理,是JVM出错。Exception是可以由程序进行处理的。
3.匿名内部类是否可以extends其他类,是否可以实现interface?
允许继承或者实现,因为匿名内部类是在抽象类或者接口的基础上发展起来的。
4.Static Nested Class和Inner Class的不同
使用static声明的内部类就是外部类,可以通过外部类.内部类直接进行访问
普通的内部类是不能直接被外部所访问的,需要通过外部类实例在找到内部类的实例。
5.HashMap和HashTable的区别。
HashMap:采用异步处理方式,性能高,但是属于非线程安全。允许设置null。
HashTable:采用同步处理方式,性能较低,线程安全,不允许设置null。
6.GC是什么?为什么要GC?
GC是垃圾收集。使用GC可以进行垃圾空间的释放操作。
7.sleep()和wait()的区别
sleep()是Thread类中定义的方法,表示线程的休眠,会自动唤醒。Sleep不释放锁。
Wait是object中定义的方法,需要使用notify或者notifyAll方法唤醒。Wait释放锁。
8.Java中的那些类是满足单例模式?
Class类和Runtime类。 9.char能不能存中文?
能,因为使用的是Unicode编码。
10.多线程有几种实现方法?同步有几种方法?
多线程有两种方法:继承Thread类和实现Runnable接口。Thread类是Runnable接口的子类,使用Runnable接口可以实现资源共享的目的,所有的线程操作都必须使用Thread类的start方法启动。
实现同步的方法有两种:synchronized代码块和synchronized方法。
11.String和StringBuffer的区别?
String不能修改,StringBuffer能够修改。
12.Class.forName的作用是什么?
Class.forName属于向容器之中加载驱动程序。
13.说出类集合框架的完整结构。
类集框架最大的几个接口:Connection、Map、Interator、Enumeration
|-Connection:存放单值的:
|-List:允许有重复内容
|-ArrayList:异步处理,新的操作类,非线程安全
|-Vector:同步处理,旧的操作类,线程安全,支持Enumeration输出
|-Set:不允许有重复内容,依靠hashCode和equals记性重复的验证
|-HashSet:无序存放
|-TreeSet:有序排列,按照Comparable排序
|-Map:存放一对值
|-HashMap:新的类,异步处理,非线程安全,允许null
|-HashTable:旧的类,同步处理,线程安全,不允许为null
|-Properties:属性操作类
|-TreeMap:有序排列,按照key排序,根据Comparaable指定排序规则
|-Iterator:迭代输出,依靠Collection接口中的iterator方法输出,是新的输出标准。
|-Enumeration:旧的输出操作。
14.Sting能不能继承?
不能,因为使用final修饰。
15.JSP有哪些内置对象?(ROSEAPPRC(玫瑰应用发行版))
一共九个内置对象。
1.pageContext->javax.servlet.jsp.PageContet.表示页容器
2.request->javax.servlet.http.HttpServletRequest.服务器端取得客户端的信息
3.response->javax.servlet.http.HttpServletResponse.服务器端回应给客户端的信息
4.session->javax.servlet.http.HttpSession.表示每一个用户用于登录验证
5.application->javax.servlet.ServletContext.可以通过this.getServletContext()方法替代.表示整个服务器的上下文,常用方法是getRealPath()。
6.config->javax.servletServletConfig.取得初始化参数,在web.xml中配置
7.exception->java.lang.Throwable.表示错误页的处理操作
8.page->java.lang.Object.如同this一样,表示整个JSP页面。
9.out->javax.servlet.jsp.JspWriter.输出,尽量使用表达式输出。
16.JSP有哪些动作?
所谓的动作,指的是标签指令。
1.<jsp:include>:包含
2.<jsp:forward>:跳转
3.<jsp:useBean>:使用JavaBean
4.<jsp:setProperty>:设置属性,通过反射调用方法
5.<jsp:getProperty>:取得属性
6.<jsp:plugin>:插入Applet程序的代码
17.JSP中动态include与静态include的区别
动态include:<jsp:include>,如果包含的是动态页,则先编译之后再进行处理
静态include:<@include%>:直接将内容先包含后处理
18.两种跳转的方式分别是什么,什么区别?
服务器跳转:<jsp:forward>,跳转之后地址栏不改变,可以传递request属性,实际上是ResquestDispatch接口的封装。
客户端跳转:response.sendRedirect(),跳转之后地址栏改变。
19.总结Web开发中会话跟踪的实现。
1.session,最常用的一种
2.Cookie
3.地址重写
4.表单隐藏域
20.说明JSP中的errorPage的作用,应用范围。
表示错误页的操作,在一般的站点中,只要一个程序出现错误或者一行,则可以进行显示。简单的错误页基本上都是在JSP的开发中使用。要先使用errorPage需要满足:
1. 在错误处理的页面上的page指令中,增加isErrorPage=”true”
2. 在每个页面中指定errorPage,指定isErrorPage为true的页面
如果想要建立全局的错误处理,需要在web.xml中进行配置。
21.写JDBC连接Oracle的程序,实现查询。
1.定义一系列的全局常量:驱动路径、连接地址、用户名、密码
2.加载驱动程序
3.连接数据库
4.操作数据库,更新或查询
5.关闭数据库
Public static final String DBDRIVER = “oracle.jdbc.driver.OracleDriver”; Public static final String DBURL = “jdbc:oracle:thin:@loalhost:1521:CONAN”; Public static final String DBUSER = “scott”; Public static final String DBPASSWORD = “tiger”; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; String sql = “SELECT empno,ename,job FROM emp”; Class.forName(DBDRIVER); Conn.Drever,Manager.getConnection(DBURL,DBUSER,DBPASSWORD); Pstmt=conn.prepareStatement(sql); rs=pstmt.executeQuery(); while(rs.next()) { Int empno = rs.getInt(1); String ename = rs.getString(2); String job = rs.getString(3); } Rs.close(); Pstmt.close(); Conn.close();//正着打开,反着关闭 |
22.JSP中如何实现分页操作?
分页分为真分页和假分页。
真分页:性能高,基于数据库的操作,只是从数据库中去纯白虎部分的数据进行显示,但可移植性低。
假分页:性能低,查询全部结果,之后依靠算法分页,可移植性高。
实现原理:
1. 定义一些列的变量:curruentPage、lineSize,计算出pageSize和allRecorders
2. pageSize=(allRecords+lineSize-1)/lineSize
3. 之后的数据查询执行lineSize和currentPage进行数据的查询
4. 通过表单不断的修改currentPage和lineSize就可以实现分页显示
23.Servlet声明周期。
0.加载
1.初始化。正常一次,对应init()方法,有两个inti()方法,其中一个是ServletConfig对象,此方法存在则无参不调用,正常情况下在第一次使用Servlet的时候才进行初始化操作。当然,也可以通过在容器启动的时候自动进行初始化:<load-on-startup>
2.服务。服务多次。所有的服务都由services方法分配,主要由doGet和doPost。
3.销毁。正常一次,调用destroy方法。如果一个servlet长时间不使用,也会自动销毁,而当再次使用时也会重新初始化。
4.卸载。加载和卸载有容器处理。
24.Servlet中的forward和redirect的区别
Forward是RequestDispatcher接口定义的,而redirect是response定义的。一个是服务器端跳转,一个是客户端跳转。
25.MVC各部分的技术,如何实现。
MVC:MODEL、VIEW、CONTROLLER
|-Mode:JavaBean:业务处理、数据处理
|-View:最好不存在Scriptlet,可使用标签消除
|-Controller:控制,接受View传递的内容和调用JavaBean,并根据JavaBean的处理结果进行跳转。
实现原理:所有的JSP将内容提交给Servlet,Servlet接受这些内容并调用相应的JavaBean进行业务及数据的处理,JavaBean完成业务的操作。之后Servlet将其提交给JSP显示。
26.实现国际化的思路。
Local、属性文件、ResourceBundle
国际化程序的实现,是根据本机操作系统的语言类型,根据不同的属性文件,所有的程序代码基本一样,但是文字显示不一样,所以将内容作为属性文件出现之后,可以值显示属性文件中的字。
27.描述JSP和Servlet的区别、共同点、各自应用的范围。
JSP:先有Servlet,再有JSP。Servlet是在Java中嵌入HTML,JSP是在HTML中嵌入Java代码。
JSP可以完成的,Servlet都可以完成,但是对于过滤器、监听器只能由Servlet完成。
应用范围:JSP用于显示,Servlet用于控制。
28.简述web.xml的作用
称为部署描述符,在整个Java中是容器都会存在部署描述符,此部署描述符可以控制整个web中各个组件的运行状态。
北风网笔试面试精讲
1. 找奇数:public static Boolean isOdd(int i){return i%2==1;}
忽略了对负数进行考虑。比如-1%2就是false,但是-1是奇数。应该为return i%2!=0;
2. 浮点数想加减:System.out.pirntln(2.0-1.1);输出结果为0.9999999999
Java默认为double,因此输出的小数位数长。可改为System.out.printf(“%.2f”,2.0-1.1);输出为0.9.
3. 长整除:final long MICRO = 24*60*60*1000*1000;final MILL = 24*60*60*1000;System.out.println(MICRO/MILL);结果不为1000;
应该为:final long MICRO = 24L*60*60*1000*1000;final MILL = 24L*60*60*1000;因为之前都是int型,最终MICRO和MILL都是int型,计算式溢出。可以通过在其中一个数加上L提升整体的类型为long型。
4. 交换变量:int x =1948;int y = 2001; x^=y^=x^y=y;
C/C++中可以这样,但是Java中应该改为:y=(x^=(y^=x))^y
5. System.out.proint(‘H’+’a’);
输出结果为169。因为单引号表示字符char,相加的会自动提升为int型。
6. 字符数组:char[] numbers = {’1’,’2’};System.out.println(number);输出为12.而如下语句System.out.println(“number”+number);输出为number@2342.
因为跟字符串运算时默认调用toStirng方法,数组的toString默认为Object的toString,打印出来的是hashCode。
7. 转义字符:System.out.println(“a\u0022.length()+\u0022b”.length());
输出结果为2。因为\u0022表示的是双引号的转义字符。
8. 打印输出类名:MyClass.class.getName().replaceAll(“.”,”/”+”.class”);
还是需要注意转义字符的使用。“.”应该改为“\\.”。
9. StringBuffer的使用;
StringBuffer构造时有StringBuffer(int capacity),因此使用StringBuffer sb = new StringBuffer(‘p’);需要格外注意, ‘P’表示的是int类型的数!!!可改为“P”。
10. Math.rand(-11.5)=-11.四舍五入往前如!
11. I/O时finally中其实也不能写close关闭语句,因为close关闭语句也会抛出异常。
转载地址:http://waxqb.baihongyu.com/