java面试题(二)

xiaoxiao2021-02-28  17

内存溢出的防范

1.异常

       throwable是异常的父类,其次就是Exption

       0做为除数时-----数学异常

       数组越界异常

       异常的分类

              1.编译期异常

              2.运行期异常

2.什么时重定向

       服务器通知浏览器向一个新的地址发送请求(302状态码和Location消息头)

3.重定向的特点

       重定向地址是任意的。

       重定向之后,浏览器地址栏的地址会发生变化。

4.Dao是什么(DataAccess Object)

       他是封装了数据访问逻辑的对象

5.什么是servlet

       他是sun公司制定的用来扩展web服务器功能的组建规范

       组件是什么?

       符合规范,实现部分功能,并且需要部署到相应的容器里面才能运行的软件模块

6.什么是http协议?

       一种网络应用协议,规定了浏览器与web服务器之间如何通信以及相应的数据包结构

7.方法的重载

       方法名相同,参数列表不同

8.方法的重写

       方法名相同,参数列表也相同,方法体不同

9.jsp是什么

       jsp本质就是一个servlet,他是sun公司制定的一种服务器端的动态页面技术规范,

10.jsp是如何执行的

       1.容器将jsp转换成一个.java文件(即servlet类)

       2.容器在将该servlet编译,实例化,调用

11.什么是javaScript

       他是一种基于对象和事件驱动的解释性脚本语言

12.说出ArrayList,Vector,LinkedList的存储性能和特性

       ArrayList和Vector都是使用数组的方式存数据,vector由于使用了synchronized方法(线程安全),

        通常性能上较Arraylist差,而LinkedList使用双向链表实现存储,安序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快

13.dom---文档对象模型    bom----浏览器对象模型

14.String是最基本的数据类型吗

       String不是最基本的数据类型,String是一个字符串类

15.java八大数据类型有哪些

       byte,short,int.long.double.float,char.boolean

16.int和Integer的区别

       int是基本的的数据类型,Integer是java为int类型提供的封装类

17.String和StringBuffer的区别

       String和StringBuffer都是对字符串的操作,但是Sting一旦赋值,是无法改变的,而StirngBuffer是一个增强的字符串,我们可以对他的值进行操作

18.collection和collections的区别

       collecton是list和set集和的超类,而collections是提供了对集合进行操作的工具类

19.HashMap和HashTable的区别

       他们都是实现了map接口

       HashMap线程不是安全的,hashmap允许有一个null健和null值,

       Hashtable线程是安全的,hashtable不允许存在null健和nill值

       HashMap由于线程不是安全的,效率要高于HashTable

20.masql分页的关键字是limit,oracle的分页关键字是rownum,sqlser的分页关键字是top

21.java为什么可以跨平台

       因为java程序在编译后代码是不能被硬件平台直接运行,而是通过java提供的jvm(java虚拟机)把java程序编译成对应硬件平台能够执行的代码,所以java是跨平台的

22.堆和栈有什么区别

       栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属的存储空间,用于存储这个方法的局部变量,当这个方法结束时,分配给这个方法的栈会释放,栈中的变量也会释放

       堆一般存放不放在当前方法栈中的那些数据,例如new出来的对象,他不会随着方法的结束而消失,注意---方法中的局部变量被final修饰后,是放在堆中的,不是栈中的

23.面向对象的几大特征分别是什么

       封装,继承,多态,抽象

24.什么是服务器

       他就是一台高配置的电脑

25.   cs(client Server)客户端和服务器

              特点---简单便捷,用户体验高

       bs(Browser server)浏览器和服务器

              特点---跨平台,功能升级便捷

 

26.jdbc操作数据库的步骤

       1.加载驱动

       2.创建连接

       3.创建语句

       4.执行语句

       5.处理结果

       6.关闭资源

27.abstract class和interface有什么不同

       被acstract修饰过的类是抽象类,他只声明方法而不去实现,也不能被实例化,只能子类继承他,实现他的方法,interface是接口,接口里面的方法全部都是抽象的,没有方法体,接口可以定义staticfinal常量

28.子类可以继承父类的构造方法吗

        

29.解析xml有几种形式

       sax解析----解析速度快,占用内存少

       dom解析----使用dom解析xml文件,代码看起来较为直观,在某些方面比基于SAX解析的实现更为简单

       dom4j解析---简单以用,采用java集合框架,并完全支持Xpath,有很好的性能,大量使用了接口,API较为复杂

30.创建对象的几种方法

       1.用new关键字创建对象

       2.用反射手段,调用Constructor类的newInstance方法

       3.调用对象的clone()方法

       4.用序列化手段用InputStream对象的readObject()方法

31.什么是转发

       一个web组件将未完成的处理交给另一个web组件继续做

       转发的本质就是一个web组件通知容器去调用另一个wen组件

       web组建指的是servlet或者jsp

       常见的情况是一个serlvet获得数据,然后将这些数据交给一个jsp来展现

31.转发和重定向的区别

       能否共享request对象-----转发可以,重定向不行,当容器收到请求之后,会立即创建request和response对象,当响应完毕,容器会立即销毁这两个对象,他们的生存周期是一次请求与一次响应之间

       转发之后浏览器地址栏是不会变化的,因为浏览器不知道request对象的数据是从那里来的,转发的目的地必须是同一个web应用中的某个地址

       转发是容器去调用jsp页面,转发不会丢失数据,重定向会丢失数据

32.request和rsponse对象的生存周期

       当容器收到请求之后,会立即创建request和response对象,当响应完毕,容器会立即销毁这两个对象,他们的生存周期是一次请求与一次响应之间

33.什么是状态管理

       将浏览器与web服务器之间的多次交互当作一个整体来处理,并且将多次交互所涉及的数据(即状态)保存下来

       如何进行状态管理

              1.将状态保存在服务器端---------Session

              2.将状态保存在浏览器端----cookie

       什么是cookie---服务器零时存放在浏览器端的少量的数据

       Cookie只能保存合法的ascii字符,对于中文,需要转换成ascii字符的形式

33.Cookie的生命周期

       a.默认情况下,浏览器会将cookie保存在内存内里,只要浏览器不关闭,cookie就会一直存在

       b.可以调用setMaxAge方法来设置cookie的生存时间

       >0----浏览器会将cookie保存在硬盘上,如果超过指定时间,浏览器则会删除该cookie

       <0----缺省值,会把cookie保存在内存里

       =0----删除Cookie

34.cookie的限制

       可以被用户禁止

       cookie是非常不安全的----对于眉感的数据,如果以cookie的形式存放到浏览器端,一定要加密

       cookie只能保存字符串

35.什么是Cookie的路径问题

       指的是浏览器在向服务器上的某个地址发送请求时,会比较该地址是否符合Cookie的路径的要求,只有符合条件的cookie才会被发送     

       cookie的默认路径等于添加cookie的web组件的路径

36.什么是jquery

       jquery是一个优秀的,轻量级的js库

37.常用的数据结构有哪些

       链表,堆栈,二叉树,队列,图,集合

38.什么是session(一次会话)

       服务器为了保存用户状态而创建的一个特殊对象

       session的工作原理

              当浏览器访问服务器时,服务器会创建一个session对象,该对象有一个唯一的id,一般称之为sessionid,接下来,服务器会将sessionid以cookie的方式发送给浏览器

              当浏览器再次访问服务器时,会将sessionid发送过来,服务器可以利用sessionid找到对应的session对象

39.获得session对象的三种方式的区别

       HttpSessionsession = request.getSession();等价与HttpSession session =request.getSession(true);

       HttpSessionsession = request.getSession(false);----如果有sessionid,则根据sessionid去找session对象,如果没有找到,则返回null;他不会创建session对象

40.什么是session超时

       服务器会将空闲时间比较长的session删掉,目的时为了节省内存空间,缺省的超时时间,大部分服务器默认为30分钟,可以修改默认时间

41.删除session对象-----session.invalidate();

42.cookie和session的区别

       session相对于cookie,优点是存放更多的数据,支持更丰富的数据类型,更加安全,因为session是把数据保存在服务器端,缺点是可能会占用过多的内存空间

43.什么是过滤器

       Servlet规范当中定义的一种特殊的组件,用来拦截Servlet容器的调用过程,当请求到达容器之后,如果有过滤器的话,容器会先调用过滤器,实现Filter接口,在doFilter方法里面编写相应的拦截处理逻辑

44.servlet的生命周期

       1.什么是servlet的生命周期

              容器如何创建servlet实例,如何对其进行初始化处理,如果调用其方法处理请求,以及如何销毁其实例的整个过程

       2.分成那几个阶段

              1.实例化

                     什么是是实列化----容器调用servlet的构造器,创建servlet对象

                     什么时间实列化----默认情况下,容器收到请求之后,才会创建servletshilie,容器只会创建一个实列

                            容器启动之后立即创建servlet实列,需要配置load-on-startup

              2.初始化(init方法进行servlet类的初始化)

                     什么是初始化----容器在实列化之后,会调用servlet的init方法

              3.服务(处理客户端请求响应 doxx方法)

              4.销毁(destroy)

       3.相关的接口与类

             

45.说说你对mvc的理解

       1.提高了程序人员对代码的可读性,解耦合,让编写出的代码模块化

       2.mvc设计模式:解耦合,模块化

              m:model--模版【实体类,数据访问层的类,业务逻辑层的类】

              v:view--视图【html,jsp...】显示控制器传递过来的数据

              c:controller--控制器【servlet】控制页面的跳转,传递数据

46.jsp的九大内置对象

       1.page对象---作用:当前页面的属性

       2.out对象---作用:向当前网页输出内容

       3.request对象---作用:一次请求

       4.response对象---作用:一次响应,服务器响应数据给客户端

       5.session对象---作用:一次会话

       6.application对象---作用:实现当前项目下所有用户数据的共享

       7.pageContext对象---作用:代替page作用域

       8.cofig对象---作用:当前jsp的核心配置信息

       9.exception对象---作用:处理异常的信息

47.连接池的工作原理

       连接池就是内存中的一块区域,当项目启动的时间,如果配置了数据源,tomcat容易就会创建一个内存区域(称为u连接池),在这块区域中先准备好哟写数据等待客户端来访问,当有客户端来访问时,就把这块内存中的数据给他,如果不够用,就会去数据库拿,如果够用并且有空闲的,就会放置回数据库。

48.常用的5个运行时异常

       1.NULLPointerxception--空指针异常

       2.ClassCastException---类强制转换异常

       3.NegativeArrrayException---数组负下标异常

       4.ArrayIndexOutOfBoundsException---数组下标越界异常

       5.NummberFormateException---字符串转换异常

49.反射的五大核心类是那些

       1.反射与父类---Class

       2.取得父类的包名称---getPackage();

       3.取得父类的Class对象--getSupperClass();

       4.取得所有实现的分类接口---getInterfaces();[返回值为数组]

50.什么是三层

       数据访问层

       业务逻辑层

       控制层

51.js包括那些数据类型

       Undefined,Null,String,Number,Boolean,Object

52.过滤器有什么优点

       可以将多个web组件相同的处理逻辑集中写在过滤器里面,方便代码的维护

       可以在不修改源代码的基础上,增加一些新的功能

      

53.过滤器的优先级

       多个过滤器都满足拦截的要求,按照配置的顺序琢个执行   

54.什么是xml

       他是可扩展标签语言,为了配置软件的配置文件而存在

 

55.doGet和doPost方法的作用

       处理各自的请求

56.servlet的线程安全问题

       1.为什么说servlet会有线程安全的问题

              容器只会创建一个servletshilie,容器收到请求之后,会启动一个线程,由该线程来调用servlet来处理请求,这样一来就有可能会发生线程的安全的问题,

              因为同时会有多个线程访问一个servlet

       2.如何解决

              使用synchronized对产生线程不安全的代码加锁,加所会降低性能

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.Servlet的九大内置对象

       out(输出流对象),request(请求对象),response(响应对象),cookie(),session()

 

       ,page--improt,contentType,pageEconding(指令),

       为什么直接可以用这些隐含兑现-----因为容器会帮我们添加这些隐含的代码

 

<%include file="页面地址"%>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-2596284.html

最新回复(0)