Java、Java Web面试题(来源于MLDN、北方网)
来源于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(); { 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关闭语句也会抛出异常。
Java、Java Web面试题(来源于MLDN、北方网)相关推荐
- java web面试_超实用的Java web面试题
Java web面试题 1.Tomcat的优化经验 答:去掉对web.xml的监视,把jsp提前编辑成Servlet. 有富余物理内存的情况,加大tomcat使用的jvm的内存 2.HTTP请求的GE ...
- Java Web解决跨域请求,java初级面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- java web面试题
java web面试题 第1题. 编写一个Filter,需要() A. 继承Filter 类 B. 实现Filter 接口 C. 继承HttpFilter 类 D. 实现HttpFilter ...
- java web面试题大全_Java经典面试题之Java web开发汇总(附答案)
1.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? 答:Web 容器加载Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其init 方法进行Servle ...
- Java并发编程面试题(2020最新版)
转载自 Java并发编程面试题(2020最新版) 基础知识 并发编程的优缺点 为什么要使用并发编程(并发编程的优点) 充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到 ...
- 分享18道Java基础面试笔试题
转载自 分享18道Java基础面试笔试题(面试实拍) 1.你最常上的两个技术站和最常使用的两个app分別进什么?主要解决你什么需求? 2.请简述http协议中get请求和post请求的区别. 3.请简 ...
- java的xml面试题_Java程序员的10个XML面试问答
java的xml面试题 XML面试问题在各种编程工作面试中非常受欢迎,包括针对Web开发人员的Java面试 . XML是一项成熟的技术,通常用作从一个平台传输数据的标准. XML面试问题包含来自各种X ...
- JAVA程序员面试题集合
JAVA程序员面试题集合 分类: 编程语言 2012-12-08 12:10 50人阅读 评论(0) 收藏 举报 1.面向对象的特征有哪些方面 (1)抽象: 抽象就是忽略一个主题中与当前目标无关的那些 ...
- 第八十四期: Java、Web 和移动程序员学习的 12 个框架
今天的文章中,我将分享一些你可以学习的框架,以提升你在移动和Web开发以及大数据技术方面的知识. 作者:芒果教你学编程 在今天的文章中,我将分享一些你可以学习的框架,以提升你在移动和Web开发以及大数 ...
- 2019 阿里Java 4轮面试题,含必考题答案参考!
Java一面 hashmap源码问题 HashMap底层结构 put操作讲一下 HashMap.HashMap如何保证线程安全.ConcurrentHashMap JVM有哪些回收算法,对应的收集器有 ...
最新文章
- JAVA设计模式初探之——装饰者模式
- Boost:宏BOOST_NO_RTTI的使用实例
- 你与数据科学家只差这26条python技巧
- mysql按中文拼音字母排序_解析MySQL按常规排序、自定义排序和按中文拼音字母排序的方法...
- . Two Sum(C, C++, Python)
- bzoj 3513: [MUTC2013]idiots【生成函数+FFT】
- 如何用Apache POI操作Excel文件-----如何对一个单元格加注解?
- Js面向对象学习之function
- C# 判断输入的字符串是否只包含数字和英文字母
- 感觉非常经典的一片博文(关于缓存)
- Atitit 群控云控资料索引index cyonkon yunkon cyonkonYonkon群控云控方面资料.rar C:\Users\ATI\Documents\cyonkonYonko
- 人工智能数学之信息论
- 最全iOS12捷径库收集整理,iOS12捷径推荐
- 计算机基础单位:位,字节,兆等关系
- 万恶淫为首,此言不虚。举要言之,邪淫者有如下十大不如意果报:
- python 战舰_419. 甲板上的战舰(Python)
- 出现nginx: [emerg] unknown directive “]“ in /usr/local/openresty/nginx/conf/nginx.conf:74
- 违反卖家评论政策被警告了应该怎么操作?
- 二进制除法移位相减_二进制除法计算器
- [QNX Hypervisor 2.2用户手册]10.4 vdev hpet
热门文章
- Alex 的 Hadoop 菜鸟教程: 第7课 Hbase 使用教程
- mysql关联查询关键字_MySQL数据高级查询之连接查询、联合查询、子查询
- Docker修改MySQL默认端口
- Altium Designer 17安装教程
- Win10桌面背景(壁纸)导出工具
- <2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame(八)—— 终篇总结
- 微信开通检测软件的原理及使用方法
- AlterID.exe 报错问题
- Eclipse| Eclipse安装中文版本教程
- 2021五一杯数学建模B题 消防救援问题