当前位置:文档之家› 尚学堂Java笔记

尚学堂Java笔记

尚学堂Java笔记
尚学堂Java笔记

笔试和面试题目

北京尚学堂科技

JAVA基础笔试题目

1.JDK和JRE的区别?

Java Development Kit. 包含了JRE、编译器等程序。

Java Runtime Environment指的是java运行时环境。负责启动虚拟机,加载和运行class文件。

2.JVM是什么?工作原理?

JVM是sun公司定义的规范。

java vitual mashine。

3.GC是什么?是如何回收对象的?

Gabbage collection 垃圾回收器。哪些对象需要回收?对象没有被引用。

4.()的作用是?程序员能直接调用垃圾回收器吗?

GC不能被程序员调用。()可以通知调用垃圾回收器。

5.一个java源文件,可以定义多个class类吗?可以定义多个public类吗?

可以。

6.java中,包含几种数据类型?

基本数据类型

byte 1个字节

short 2个字节

int 4个字节整形常量默认类型

long 8个字节

float 4个字节

double 8个字节浮点常量的默认类型

char 2个字节Unicode码

boolean 1位

引用数据类型(4个)

7.&和&&的区别? 3&4和3&&4哪个写法是不对的?

&,按位与

&& 逻辑与短路

8.2x4=8. 最快的算法怎么实现?

移位运算。左移一位表示乘以一个2.

9.堆区和栈区的区别?

10. 包装类使用时,自动装箱和拆箱是怎么回事?

1.

2.3.

6.

7.

XML问题

1.xml解析的两种基本方式:DOM和SAX的区别是?

DOM: document object model。一次加载,随机操作文档。

SAX: simple api for xml 。按照流的方式加载。

2.平时工作中,xml解析你是使用什么?

JDOM

DOM4J

3.dtd、schema干嘛的?

dtd: document type definition 文档类型定义。定义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.你如何理解servlet? 如何定义servlet类?

servlet运行于服务器端,为客户端提供相关的服务。servlet运行于servlet容器中。servlet 调用不能直接调用,需要通过请求服务器,服务器调用servlet。

servlet本质还是一个java类。

servlet是给客户端提供运算服务。当有一个客户端连接到服务器上时,服务器会创建一个新的线程提供服务,这个线程调用相关的servlet。servlet是单例模式,相关线程共享一个servlet对象。

extends HttpServlet即可。重写service方法。

4.servlet的生命周期是什么?

加载

初始化(调用init())

执行(service())

销毁(destroy())

当有一个客户端连接到服务器上时,服务器会创建一个新的线程提供服务,这个线程调用相关的servlet。servlet是单例模式,相关线程共享一个servlet对象。

5.请求转发forward和重定向sendredirect的区别?他们两个内部实现机制?

a.请求转发。客户端发出一个请求A,服务器调用了ServletA,servletA直接调转到

ServletB。然后,服务器直接将serlvetB的执行返回。客户端并不知道服务器内部跳转。所以,地址栏不发生改变。

b.重定向。客户端发出一个请求A,服务器调用了命令:(“b”)。这个命令的本质是:

写了一个响应头Location,这个Location中包含了重定向的url。客户端收到Location

响应头后,会根据这个Location指定的url重新发送请求。也就是说,我们整个过程请求了两次。

6.HttpservletRequest对象、HttpServietResponse对象的作用是什么?

这两个对象都是服务器创建,创建好后传给了servlet。request对象包含了客户端的信息。response包含了servlet要写给客户端的信息。

7.浏览器发送给服务器的是http请求,是谁将这些请求内容封装成HttpServletRequest对

象? 我们自己能创建HttpServletRequest对象吗?

不能。

8.过滤器的作用是什么?

过滤一类请求。实现统一的行为控制。比如:中文过滤器、struts2过滤器。

9.监听器的作用是什么?

监听request、session、application对象的状态的变化。比如:统计一个登陆的人数。

10.说说,session是如何保存请求状态的?以及session的跟踪机制?

保存会话的状态有两种方式:session和cookie。session是服务器端保存信息。cookie是在客户端保存信息。

本身,session的跟踪机制就要依赖于cookie。跟踪机制就是用来确定一个问题:哪个会话对应哪个session对象。

在服务器端我们给每个session对象一个独一无二的ID。然后呢,把这个ID通过cookie 写给了客户端。这个cookie没有设定有效期,只在客户端内存中存放。客户端只要浏览器不关闭,这个cookie就一直有效。客户端访问我们服务器时就会携带这个有效的cookie。服务器通过cookie中包含的session对象的id,从而找到对应的session对象。

session的销毁两种方式:

1.调用invalidate方法

2.设置最大空闲时间。

11.jsp和servlet的优缺点?

serlvet优缺点:业务逻辑方便。但是,数据展现很麻烦。

jsp优缺点:写业务逻辑麻烦。但是,数据展现方便。

我们开发中,一般jsp做显示,servlet做逻辑。

12.jsp也是java类吗?jsp也是servlet吗?

jsp就是sevlet。servlet就是java类。

13.jsp的内置对象有哪些?

page,PageContext、request、response、session、application、exception、out、config 14.作用域:pageContext、request、session、application的区别是什么?

pageContext:仅本页面有效

request:同一个请求

session:同一个会话

application:同一个项目

15.jsp中,动态导入和静态导入的区别是?

静态导入:jsp引擎生成java代码时,就整合到一起。就是:源码级的导入。

动态导入:jsp引擎还是生成两个java类。相当于类的调用。

16.编程中,如果出现汉字乱码?你处理问题的思路是什么?

确定一下问题出在什么?客户端、服务器、数据库。

汉字的编码和解码是同一个字符集。

17.什么是MVC模式?

Model 数据javabean

View 视图:展现数据jsp freemarker

Control 控制器:视图之间的跳转、以及跟Model的交互servlet. struts中的action、springmvc的控制器

18.说说常见的服务器都有哪些?(tomcat, weblogic等)

apache

tomcat

网站的话:apache+若干台tomcat

weblogic

websphere

jboss

struts面试问题

1.什么是MVC模式?

Model 数据javabean

View 视图:展现数据jsp freemarker

Control 控制器:视图之间的跳转、以及跟Model的交互servlet. struts中的action、springmvc的控制器

2.常见的MVC框架有哪些? 如下这些MVC框架,运行效率哪个最慢:

a)jsp+servlet实现(不能算框架)

b)struts1

c)struts2

d)spring mvc

e)jsf

struts2运行效率最慢。

jsp+servlet>struts1, spring mvc>JSF >>struts2

3.struts2开发效率较高。但是,struts2运行效率相对较低。是由什么造成的?如何解决?

主要问题:OGNL和值栈。标签。

把展现层替换成:Freemarker

4.struts1和struts2的区别有哪些?

1.action的区别:

a)struts1的action是单例。所以呢,我们要设计成无状态的类。

b)struts2的action不是单例,每个线程都有创建独立的action对象。因此,我们

可以随意增加属性。

2.表单数据的处理:

a)struts1中我们要单独定义ActionForm类。通过ActionForm来自动封装表单的

数据。

b)struts2中,我们通过参数拦截器,可以将表单数据自动的映射到action中的名

字相同的属性或者对应的javabean。属性驱动和模型驱动。

5.你认为,struts2最核心的地方是什么?

拦截器!struts2大部分的功能都是通过拦截器实现的。

struts2的拦截器也是AOP的一种实现。AOP中内部是使用了动态代理。hibernate、spring

使用的是cglib动态生成代理类。struts2使用的jdk提供的类。

6.struts2中一个action类的实现方式有哪些? 一个普通的java类能作为action吗?

三种。一个普通类就可以作为action。或者实现Action接口。或者继承ActionSupport 类。

7.使用struts2,如何防止表单的重复提交?

第一种方式:token拦截器。

第二种方式:跳转提示页面的方式,直接使用重定向。

8.说说struts2的内部实现机制?

9.struts2中OGNL表达式比传统的EL表达式有哪些优点?

可以调用对象的普通方法、类的静态方法、可以对集合做一些复杂的操作、还可以赋值。

10.struts2中,拦截器和servlet中我们学习的过滤器有什么区别? 内部实现机制有什么区

别?

拦截器:是struts2范围之内。只能拦截action。内部机制是动态代理(模式)

过滤器:是服务器范围之内。什么都可以拦。内部机制是函数的回调。hibernate面试题

1.什么是ORM?

ORM: Object relationship mapping 对象关系映射。是因为java编程是面向对象,但是我们存储数据时,使用的数据库都是面向关系。这就存在一个不匹配的情况。ORM框架就是帮我们将面向对象的数据和面向关系的数据实现自动的互相转化。

2.hibernate的基本实现思想是?

同上题。

3.hibernate中,session是怎么实现数据库操作的?

实际上,hibernate使用了ORM得基本思想,对JDBC做了封装。我们通过session 对象去查询数据库。实际上,session对象内部持有了Connection对象的引用,最终还是通过Connection对象来实现对数据库的操作。

但是,hibernate对Connection的管理做了优化。使用了连接池。这样的话,就避免了频繁的创建Connection对象,提高了效率。

session除了持有Connection对象的引用。还在内部维护了一个Map,只有在Map 中存放的对象,session才会进行管理。这个map实际上也就是我们说的一级缓存。4.hibernate中,实体对象的状态有哪些?

瞬时态:跟session无关,跟数据库无关。

持久态:跟session有关,跟数据库有关。处于持久态的对象,状态做了更新,hibernate 会自动的同步到数据库。

游离态/托管态:跟session无关,跟数据库有关。

5.hibernate中,我们能使用普通的SQL查询吗? 怎么做?

能。创建SQLQuery即可。

6.如何使用hibernate进行分页查询?

setMaxResult, setFirstResult

7.你认为,hibernate有哪些优势? 有哪些劣势?

优势:

1.是一个优秀的ORM框架。让我们可以以更加面向对象的方式编程。写一写逻辑的时

候更加方便。

2.效率也较高。内部有缓存。一级缓存、二级缓存、查询缓存。

3.屏蔽了底层数据库的差异。

劣势:

1.多表查询效率较低。可以自己写原生查询。

2.数据量大的时候,效率较低。

8.实际工作中,如何选用:Hibernate、Ibatis框架?

管理系统:逻辑较复杂、可以采用hibernate。

网站系统:ibatis。

9.get和load方法的区别是什么?

get:直接加载对象。如果不存在,则返回null

load:懒加载。返回一个假的代理对象。如果真的不存在,则抛出异常。

他们两个方法都会访问:一级缓存、二级缓存(如果开得话)

10.说出几种常见的主键生成方式?

a)native, identify, sequence, uuid, hilo

1.

IOC: Inverse Of Control 控制反转

DI:Dependency injection 依赖注入

是一回事。只不过说的不同的方面。IOC讲的控制关系的转换。以前属性的赋值是由对象自己完成。现在是交给了外部的spring来通过反射机制来赋值。通过set方法注入、或者通过构造器注入、也可以通过普通方法注入(这时候就需要定义接口)

2.依赖注入的三种方式都是什么? 一般常用哪个方式?

setter注入:通过反射调用setter方法。(我们一般用它)

构造器注入:通过反射调用构造器

接口注入:通过反射调用接口中定义的普通方法

3.spring的aop是否使用了aspectJ框架?

是。

4.说说,AOP是什么? AOP有什么好处? 动态代理怎么理解?

aop:aspect oriented programming。面向切面编程。

aop的核心实现是动态代理。平时常见的是使用JDK提供的InnvocationHandle实现,还可以使用cglib来实现。struts2使用了JDK提供的动态代理实现,hibernate和spring使

用了cglib提供的实现。

动态代理实际上的意思是:动态生成代理类。这样,我们就可以控制代理类的代码,代理类的方法都会去调用InnvocationHandle接口中的invoke方法。

这样的话,我只要一调用代理对象的方法,就会统一跑到invoke方法。然后,我们就可以在invoke方法对所有的方法做统一的预处理、后期处理。

5.请写出SSH框架整合的步骤

整合hibernate

a)增加相关jar包

b)增加spring配置文件:,文件内容如下:

i.配置组件扫描。让spring管理basePackage和他的子包下所有的类。

ii.配置dataSource数据源

iii.配置sessionFactory

iv.配置事务管理(事务增加在service层!)

v.配置HibernateTemplate

整合struts

c)导入jar包

d)配置

i.配置指定spring配置文件的路径和名字!

ii.配置opensessionInview过滤器(一定要配置在struts过滤器之前)

iii.配置struts过滤器

iv.增加spring上下文加载的监听器

e)增加:

增加

6.如何使用spring的声明式事务管理?

在xml中配置一个事务管理器、然后配置切面。

7.如果我们要实现定时调度某个任务? 怎么实现,请说出两种实现方式?

第一种:timer、timertask

第二种:通过spring整合使用quatz框架

8.说说,opensessionInview模式的实现原理?

UML问题

1.uml中常用的图有哪些?

a)用例图

b)类图

c)时序图

d)活动图

e)状态图

数据库问题

1.事务是什么?

一组要么同时执行,要么同时不执行的SQL语句。

2.事务的基本特点有哪些?

ACID:原子性、一致性、持久性、隔离性。

3.oracle中分页通过什么字段实现?

rownum

4.什么是存储过程?

在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。就本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。5.存储过程有什么优势?

1.一般的sql每次使用都要编译一次。存储过程只要在创建时编译一次即可,以后都

是直接执行。因此,效率较高。

2.当对数据库进行复杂操作时,可以将这个复杂过程封装的存储过程中。方便维护和

调用。

3.安全性较高。可以指定用户来使用我们的存储过程。

6.存储过程的创建和调用?

创建存储过程

create procedure sp_name()

begin

.........

end

调用存储过程

1.基本语法:call sp_name()

7.JDBC中如何调用存储过程?

Callablestatement cstmt= ("{callgettestdata(?,?)}");?

8.将课堂上,练习过的sql语句复习一遍。考试时经常考察sql语句。不过,能够完成我们

课堂上的sql语句,应付笔试没问题。

9.JDBC的使用过程?

加载驱动、创建Connection对象、创建预编译sql对象,查询、处理结果集、关闭预编译sql对象关闭Connection对象。

11.常见的数据库产品有哪些?

oracle、mysql、db2、sqlserver。

12.jdbc中,事务会自动提交吗? hibernate中,事务会自动提交吗?

会。不会。

13.PreparedStatement和statement的区别?

PreparedStatement可以提高效率,防止sql注入攻击。

PreparedStatement是statement的子类。

14.说说,为什么需要数据库连接池? 说说数据库连接池的实现原理?

每次查询数据库都创建Connection对象的话,太消耗资源了。没有必要。

我们可以先创建一堆Connection对象,放到一个容器中。然后,用的时候,取出来即可。

用完后,放回到容器中。这个容器就是所谓的连接池。

15.说出,你见过的几种数据库连接池产品。

DBCP proxool c3po

16.如果数据量较大,如何优化数据库提高查询效率?

可以在查询较频繁的字段上,建立索引。

避免复杂的子查询。如果子查询不可避免,那就要在每次查询是过滤掉尽可能多的行。

避免使用like查询。更要避免使用复杂的表达式

17.如果更大,是电信级别的话务数据,你有什么建议?

那可以考虑分布式数据库。比如:oracle、mysql都提供了分布式的实现;或者可以考虑使用分布式文件存储系统。比如:hadoop。

设计模式问题

1.列出你常见的设计模式

工厂模式、单例模式、抽象工厂模式、原型模式、责任链模式、享元模式、策略模式、模板方法模式、代理模式、装饰器模式、观察者模式等

2.

3.

4.说出spring框架中,你知道使用了哪些设计模式?

工厂模式、单例模式、代理模式(动态代理)

5.说出hibernate框架中,使用了哪些设计模式?

工厂模式(通过SessionFactory创建session)、单例模式(创建SessionFactory类就是单例)、代理模式(动态代理,懒加载)

6.javase中,IO流一章使用了哪个典型的设计模式?

装饰器模式。struts2里面request、session对象的处理也是用的装饰器模式。

web service问题

1.简单说说web service

是由企业发布的可以完成特定需求的在线服务支持。数据描述采用xml,信息交换协议是SOAP。由于数据描述采用了xml,因此为我们提供了跨平台、跨语言的服务支持。

Linux问题

1.linux下,查看进程的命令是什么? 终止进程是什么命令?

top top -k

2.写出几个常用的linux命令?

ls cd mkdir rm rmdir man cp mv

cat whereis ln grep

3.连接linux服务器,你一般用什么软件?

a)ssh

杂七杂八问题

1.想操作office中的word文档、excel文档、ppt文档。可以用什么开源软件?

POI

2.报表开发中,想画出柱形图、折线图、饼图等,可以使用哪些开源软件?

Jfreechart

3.开发一个网站,想使用缓存提高访问。可以使用哪个开源软件?

oscache做页面缓存。

4.说说搜索引擎开发的流程。都用到哪些开源软件?

第一步:抓取数据。(wget是c语言写的。网络爬虫)

第二步:解析和分析html数据(HtmlParser)

第三步:建立索引文件(Lucene)

第四步:查询(Lucene)

相关主题
文本预览
相关文档 最新文档