尚学堂Java笔记_第1页
尚学堂Java笔记_第2页
尚学堂Java笔记_第3页
尚学堂Java笔记_第4页
尚学堂Java笔记_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、笔试和面试题目北京尚学堂科技JAVA基础笔试题目1. JDK和JRE勺区别?JaVa DeVeloPment Kit.包含了 JRE编译器等程序。JaVa RUntime EnVi ronment指的是java运行时环境。负责启动虚拟机,加载和运行 c I ass文件。2. JVM是什么?工作原理?JVM是SUn公司定义的规范。java VitUaI mashine。3. GC是什么?是如何回收对象的?Gabbage col lection垃圾回收器。哪些对象需要回收?对象没有被引用。4. ()的作用是?程序员能直接调用垃圾回收器吗?GC不能被程序员调用。()可以通知调用垃圾回收器。5. 一个

2、java源文件,可以定义多个class类吗?可以定义多个PUbliC类吗?可以。6. java中,包含几种数据类型?基本数据类型 byte 1个字节short 2个字节i nt 4个字节 long 8个字节 float 4个字节 doub I e 8个字节Char 2个字节boo lea n 1 位 引用数据类型(4个)整形常量默认类型浮点常量的默认类型Unicode 码7. &和&&的区别? 3&4和3&&4哪个写法是不对的?&&逻辑与短路8.2x4=8.最快的算法怎么实现?移位运算。左移一位表示乘以一个2.9. 堆区和栈区的区

3、别?栈区存放局部变量 连续空间存储 先进后出,后进 先出堆存放new出来的对象不连续的空间方法区存放类的信息 代码静态变量字符串常量returnnew Str in g(c);10. 包装类使用时,自动装箱和拆箱是怎么回事1. In teger I = 3;5.PUbliC String reverse2(Stri ng str) Char C = newChar 0; for ( int i二0;i<();i卄)ci = 0-1-i):XML问题1. Xml解析的两种基本方式:DoM和SAX的区别是?DOM: document object model。一次加载,随机操作文档。SAX:

4、 simple api for Xml。按照流的方式加载。2. 平时工作中,Xml解析你是使用什么?JDoMDoM4J3. dtd、schema 干嘛的?dtd: documen t type def initio n文档类型定义。定义Xml文档的结构。schema的作用和 dtd是一样的。只不过,它本身就是Xml文档。更有优势。servlet 和 jsp 问题1. 说说b/s和c/s架构.c/s:像 qq。b/s:实际上是特殊的c/s.客户端是标准的浏览器。2. http请求中,get和post的区别是?get:通过请求行传参。信息量小、不安全。post:通过请求实体传参。信息量大、安全。3

5、. 你如何理解servlet?如何定义servlet类?servlet运行于服务器端,为客户端提供相关的服务。servlet运行于servlet容器中。servlet调用不能直接调用,需要通过请求服务器,服务器调用servletoservlet本质还是一个java类。servlet是给客户端提供运算服务。当有一个客户端连接到服务器上时,服务器会创建一个新的 线程提供服务,这个线程调用相关的servleto servlet是单例模式,相关线程共 享一个 serv I et 对象。eXtends HttpServIet 即可。重写 service 方法。4. servlet的生命周期是什么?加载初

6、始化(调用initO)执行(service 0)销毁(destroy 0)当有一个客户端连接到服务器上时,服务器会创建一个新的线程提供服务,这 个线程调用相关的servleto servlet是单例模式,相关线程共享一个servlet对象。5. 请求转发forward和重定向sendredi rect的区别?他们两个内部实现机制?a. 请求转发。客户端发出一个请求 A,服务器调用了 SerVletA, SerVletA直接调转到 SerVletBo然后,服务器直接将SerlVetB的执行返回。客户端并不知道服务器内部跳转。 所以,地址栏不发生改变。b. 重定向。客户端发出一个请求A,服务器调用

7、了命令:(b)。这个命令的本质是:写了一个响应头LoCat i on,这个LoCation中包含了重定向的Ur I o客户端收到LoCation6.7.&5.16.17.响应头后,会根据这个Location指定的u门重新发送请求。也就是说,我们整个过程 请求了两次。HttpservletRequest对象、HttpServ i etResponse对象的作用是什么?这两个对象都是服务器创 建,创建好后传给了servleto request对象包含了客户端的信息。response包含了 servlet要写给客户端的信息。浏览器发送给服务器的是http请

8、求,是谁将这些请求内容圭寸装成HttpServletRequest对象?我 们自己能创建HttpServ I etRequest对象吗?不能。过滤器的作用是什么?过滤一类请求。实现统一的行为控制。比如:中文过滤器、struts2过滤器。监听器的作用是什么?监听reques t、session、appl i cat ion对象的状态的变化。比如:统计一个登陆的人数。 说说,SeSSion是如何保存请求状态的?以及SeSSion的跟踪机制?保存会话的状态有两种方式:SeSSiOn和cookie。SeSSiOn是服务器端保存信息。cookie是 在客户端保存信息。本身,SeSSion的跟踪机制就要依

9、赖于cookie。跟踪机制就是用来确定一个问题:哪个 会话对应哪个SeSSion对象。在服务器端我们给每个SeSSiOn对象一个独一无二的ID。然后呢,把这个ID通过cookie写给了客户端。这个cookie没有设定有效期,只在客户端内存中存放。客户端只要浏览器不关闭, 这个cookie就一直有效。客户端访问我们服务器时就会携带这个有效的cookieo服务器通过 cookie中包含的SeSSiOn对象的id,从而找到对应的SeSSiOn对象。SeSSion的销毁两种方式:1. 调用inva I idate方法2. 设置最大空闲时间。jSp和Servlet的优缺点?Seri vet优缺点:业务逻

10、辑方便。但是,数据展现很麻烦。jSp优缺点:写业务逻辑麻烦。但是,数据展现方便。我们开发中,一般jSp做显示,Servlet做逻辑。jSp也是java类吗?jSp也是ServIet吗?jSp 就是 SevIet。ServIet 就是 java 类。jSp的内置对象有哪些?page, PageContext、requeSt、reSponSe、SeSSion、appIication、exception、out、config 作用域:pageContextv requeStx SeSSion、appI ication 的区别是什么?PageCO ntext:仅本页面有效request :同一个请求S

11、eSSi on:同一个会话app I i cat i on :同一个项目jSp中,动态导入和静态导入的区别是?静态导入:JSp引擎生成java代码时,就整合到一起。就是:源码级的导入。动态导入:jSp引擎还是生成两个java类。相当于类的调用。编程中,如果出现汉字乱码?你处 理问题的思路是什么?确定一下问题出在什么?客户端、服务器、数据库。汉字的编码和解码是同一个字符集。什么是MVC模式?ModeI 数据 javabeanView视图:展现数据jsp freemarker Control控制器:视图之间的跳转、以及跟Model的 交互 spr ingmvc 的控制器servlet, strut

12、s 中的 actio n、18.说说常见的服务器都有哪些? (tomcat, web logic等)apachetomcat网站的话:apache+若干台tomcatweb Iogicwebspherejbossstruts面试问题什么是MVC模式?Model 数据 javabeanView 视图:展现数据jsp freemarkerContro控制器:视图之间的跳 以及跟Model的交互servIet. struts中的spr ingmvc的控制器2.3. 常见的MVC框架有哪些?如下这些MVC框架,运行效率哪个最慢:a) jsp+servlet实现(不能算框架)b) strutsc) st

13、ruts2d) spr i ng mvce) jsfstruts2运行效率最慢。jsp+serv Iet>struts1, spr i ng mvc>JSF »struts24. struts2开发效率较高。但是,struts2运行效率相对较低。是由什么造成的?如何解决? 主要问题:OGNL和值栈。标签。把展现层替换成:Freemarker5. strutsl和struts2的区别有哪些?1. action的区别:a) strutsl的action是单例。所以呢,我们要设计成无状态的类。b) struts2的action不是单例,每个线程都有创建独立的action对象。因

14、此,我们 可以随意增加属性。2. 表单数据的处理:a) strutsl中我们要单独定义ActionForm类。通过ActionForm来自动圭寸装表单的 数 据。b) struts2中,我们通过参数拦截器,可以将表单数据自动的映射到action中的名字相同的属性或者对应的javabeano属性驱动和模型驱动。6. 你认为,struts2最核心的地方是什么?拦截器! struts2大部分的功能都是通过拦截器实现的。struts2的拦截器也是A0P的一种实现。A0P中内部是使用了动态代理。hibernate、spring使用的是egl ib动态生成代理类。struts2使用的jdk提供的类。7.

15、struts2中一个action类的实现方式有哪些?一个普通的java类能作为action吗?三种。一个普通类就可以作为action。或者实现Action接口。或者继承ActionSupport类。8. 使用struts2 ,如何防止表单的重复提交?第一种方式:token拦截器。第二种方式:跳转提示页面的方式,直接使用重定向。9. 说说struts2的内部实现机制?10. StrUtS2中0GNL表达式比传统的EL表达式有哪些优点?可以调用对象的普通方法、类的静态 方法、可以对集合做一些复杂的操作、还可以赋值。11. StrUtS2中,拦截器和Servlet中我们学习的过滤器有什么区别?内部实

16、现机制有什么区另IJ? 拦截器:是StrUtS2范围之内。只能拦截action。内部机制是动态代理(模式)过滤器:是服务器范围之内。什么都可以拦。内部机制是函数的回调。h i bernate面试题1. 什么是0RM?ORM: Object relationship mapping对象关系映射。是因为java编程是面向对象,但是 我 们存储数据时,使用的数据库都是面向关系。这就存在一个不匹配的情况。0RM框架就是帮我 们将面向对象的数据和面向关系的数据实现自动的互相转化。2. hibernate的基本实现思想是?同上题。3. hibernate中,SeSSion是怎么实现数据库操作的?实际上,h

17、ibernate使用了 0RM得基本思想,对JDBC做了圭寸装。我们通过 SeSSiOn 对象去查询数据库。实际上,SeSSion对象内部持有了 Connection对象的引用,最终还 是通 过Connection对象来实现对数据库的操作。但是,hibernate对Connect io n的管理做了优化。使用了连接池。这样的话,就避 免 了频繁的创建Connection对象,提高了效率。SeSSiOn除了持有Connection对象的引用。还在内部维护了一个 MaP,只有在MaP中存放的对象,SeSSion才会进行管理。这个map实际上也就是我们说的一级缓存。4. hibernate中,实体对

18、象的状态有哪些?瞬时态:跟SeSSion无关,跟数据库无关。持久态:跟SeSSion有关,跟数据库有关。处于持久态的对象,状态做了更新,hibernate 会自动的同步到数据库。游离态/托管态:跟SeSSion无关,跟数据库有关。5. hibernate中,我们能使用普通的SQL查询吗?怎么做?能。创建SQLQUery即可。6. 如何使用hibernate进行分页查询?SetMaxReSU11, SetF i rStReSU117. 你认为,hibernate有哪些优势?有哪些劣势?优势:1. 是一个优秀的0RM框架。让我们可以以更加面向对象的方式编程。写一写逻辑的时候更加方便。2. 效率也较

19、高。内部有缓存。一级缓存、二级缓存、查询缓存。3. 屏蔽了底层数据库的差异。劣势:1. 多表查询效率较低。可以自己写原生查询。2. 数据量大的时候,效率较低。8. 实际工作中,如何选用:Hibernate、Ibatis框架?管理系统:逻辑较复杂、可以采用 hibernate。网站系统:ibatis。9. get和load方法的区别是什么?get:直接加载对象。如果不存在,则返回 nullload:懒加载。返回一个假的代理对象。如果真的不存在,则抛出异常。他们两个方法都会访问: 一级缓存、二级缓存(如果开得话)10. 说出几种常见的主键生成方式?a) n ative, ide ntify, Se

20、qlle nee, uuid, hi Io11. 手写出一段典型的 h i bernate插入数据代码SeSSi on SeSSi on =null :try SeSS i on 二();Tra nsacti on tx 二();USer U = new User ();(new Date ();(HttttM );(u);(MbbH);(Mcccw);(new Date ();1. IOC和DI是一回事吗?IOC: I nVerSe Of Control 控制反转DI: DePe ndency injection 依赖注入是一回事。只不过说的不同的方面。I0C讲的控制关系的转换。以前属性的赋

21、值是由对象自己完成。现在是交给了外部的SPring来通过反射机制来赋值。通过Set方法注入、或者通过构造器注入、也可以通过普通方法注入(这时候就需要定义接口)2. 依赖注入的三种方式都是什么? 一般常用哪个方式?Setter注入:通过反射调用Setter方法。(我们一般用它)构造器注入:通过反射调用构造器接口注入:通过反射调用接口中定义的普通方法3. SPring的aop是否使用了 aspectJ框架?是。4. 说说,AoP是什么? AoP有什么好处?动态代理怎么理解?aop: aspect oriented PrOgramming。面向切面编程。aop的核心实现是动态代理。平时常见的是使用J

22、DK提供的I nnVOCat i OnHand I e实现,还可以使用Cglib来实现。StrUtS2使用了 JDK提供的动态代理实现,hibernate和SPCng使用了 cglib提供的实现。动态代理实际上的意思是:动态生成代理类。这样,我们就可以控制代理类的代码,代理类的方 法都会去调用InnvoCationHandIe接口中的invoke方法。这样的话,我只要一调用代理对象的方法,就会统一跑到inVoke方法。然后,我们就可以在invoke方法对所有的方法做统一的预处理、后期处理。5. 请写出SSH框架整合的步骤整合 h i bernatea)增加相关jar包b)增加SPring配置文

23、件:,文件内容如下:i.配置组件扫描。让SPring管理basePackage和他的子包下所有的类。i i. 配置dataSolIrCe数据源i i i. 配置SeSSi onFactoryiV. 配置事务管理(事务增加在SerVice层!)V. 配置H i bernateTemP I ate整合StrUtSc) 导入jar包d)配置i.配置context-Param指定SPring配置文件的路径和名字!i i. 配置oPenSeSSion InView过滤器(一定要配置在StrUtS过滤器之前)i i i.配置StrUtS过滤器iV.增加SPring上下文加载的监听器e)增加:增加 <

24、conStant name 二"” ValUe 二"SPring” />6. 如何使用SPring的声明式事务管理?在xml中配置一个事务管理器、然后配置切面。7. 如果我们要实现定时调度某个任务?怎么实现,请说出两种实现方式? 第一种:t imer V t imertaSk第二种:通过SPring整合使用qUatz框架8. 说说,oPenSeSSionInView模式的实现原理?UML问题1. Uml中常用的图有哪些?a)用例图b)类图c)时序图d)活动图e)状态图数据库问题1. 事务是什么?一组要么同时执行,要么同时不执行的SQL语句。2. 事务的基本特点有哪些?

25、ACID原子性、一致性、持久性、隔离性。3. oracle中分页通过什么字段实现?rownum4. 什么是存储过程?在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还星触发器,都是SQL语句和流程控制语句的集合。就本质而言,触发器也是一种存储过程。存储过 程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。5. 存储过程有什么优势?1. 一般的Sql每次使用都要编译一次。存储过程只要在创建时编译一次即可,以后都是直接执 行。因此,效率较高。2. 当对数据库进行复杂操作时,可以将这个复杂过程封装的存储过程中。方便维护和调用。3. 安全性较高。可以指定用户来使用我们的

26、存储过程。6. 存储过程的创建和调用?创建存储过程Create ProCedllre sp_n ame ()beginend调用存储过程1. 基本语法:ca I I sp_n ame ()7. JDBC中如何调用存储过程?Callablestateme ntCStmt= (”cal Igettestdata(?)") :?8. 将课堂上,练习过的sql语句复习一遍。考试时经常考察sql语句。不过,能够完成我们课堂上的sql语句,应付笔试没问题。9. JDBC的使用过程?加载驱动、创建Connection对象、创建预编译sql对象, 查询、处理结果集、关闭预编译sq I对象关闭Conn

27、ect i on对象。10. 手写出jdbc链接mysql / oracle数据库,并进行查询的典型代码。PUbliC Static void testJDBC0 Conn ect i OnConn =nullPreParedStateme nt PS =nullReSUItSet rs =nulItry / Il();conn =(Hrootn123456”);PS = ( "select id,u name from tb_USer Where id二?" (1,20);):”+4);rs=0;Wh ile ( ) CatCh(EX:CePtiOn e) finIf a

28、llytry if (rs!= null ) 0;0;) CatCh (EXCePt i on e) try if (ps!= nulI )0;0;) CatCh (EXCePt i on e) try Iif (conn!= n ulI ) /V0;) CatCh (EXCePti on e) 0;)111. 常见的数据库产品有哪些?oracle、 mysql、 db2、 SqISerVero12. jdbc中,事务会自动提交吗? hibernate中,事务会自动提交吗?会。不会。13. PreParedStatement 和 Statement 的区别? PreParedStatement

29、 可以提高效率,防止 sq I 注 入攻击。PreParedStatement 是 Statement 的子类。14. 说说,为什么需要数据库连接池?说说数据库连接池的实现原理 ?每次查询数据库都创建 Connection对象的话,太消耗资源了。没有必要。我们可以先创建一堆Connection对象,放到一个容器中。然后,用的时候,取出来即可。 用完后,放回到容器中。这个容器就是所谓的连接池。15. 说出,你见过的几种数据库连接池产品。DBCP proxooIc3po16. 如果数据量较大,如何优化数据库提高查询效率?可以在查询较频繁的字段上,建立索引。避免复杂的子查询。如果子查询不可避免,那就要在每次查询是过滤掉尽可能多的行。避免使用 like查询。更要避免使用复杂的表达式17. 如果更大,是电信级别的话务数据,你有什么建议?那可以考虑分布式数据库。比如:OraCle、mysql都提供了分布式的实现;或者可以考虑使用分布式文件存储系统。比如:hadoopo设计模式问题1. 列出你常见的设计模式工厂模式、单例模式、抽象工厂模式、原型模式、责任链模式、享元模式、策略模式、模板方法 模式、代理模式、装饰器模式、观察者模式等2. 手写出单利模

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论