JAVA面试基础试题

JAVA面试基础试题9 请写出你最常见到的 5 个 runtimeexcep 转换异常 ClassCastExc 除零异常 ArithmeticEx 空指针异常 NullPointerE 索引越界异常 StringIndexO 数组越界异常 ArrayIndexOu 10 GC 是什么

大家好,我是讯享网,很高兴认识大家。

 9、请写出你最常见到的 5 个 runtimeexception。


转换异常 ClassCastException


除零异常 ArithmeticException


空指针异常 NullPointerException


索引越界异常 StringIndexOutOfBoundsException


数组越界异常 ArrayIndexOutOfBoundsException



10、GC 是什么? 为什么要有 GC?


GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放已分配内存的显示操作方法。



11、什么时候用 assert


assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion 就是在程序中的一条语句,它对一个 boolean 表达式进行检查,一个正确程序必须保证这个 boolean 表达式的值为 true;如果该值为 false,说明程序已经处于不正确的状态下,assert 将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion 检查通常是关闭的。



12、java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和 suspend()方法为何不推荐使用?


有两种实现方法,分别是继承 Thread 类与实现 Runnable 接口


用 synchronized 关键字修饰同步方法


反对使用 stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象


处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检


查出真正的问题所在。suspend()方法容易发生死锁。


调用 suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用


suspend(),


而应在自己的 Thread 类中置入一个标志,指出线程应该活动还是挂起。


若标志指出线程应该挂起,便用 wait()命其进入等待状态。若标志指出线程应当恢


复,则用一个 notify()重新启动线程。



13、同步和异步有何异同,在什么情况下分别使用他们?举例说明。


如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。


当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。



14、当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法?


其他方法前是否加了 synchronized 关键字,如果没加,则能。JAVA面试基础试题


如果这个方法内部调用了 wait,则可以进入其他 synchronized 方法。


如果其他个方法都加了 synchronized 关键字,并且内部没有调用 wait,则不能。


如果其他方法是 static,它用的同步锁是当前类的字节码,与非静态的方法不能同步,因为非静态的方法用的是 this。



javaweb面试题



1、说一说 Servlet 的生命周期?


web 容器加载 servlet,生命周期开始。通过调用 servlet 的 init()方法进行 servlet 的初始化。通过调用 service()方法实现,根据请求的不同调用不同的 do*()方法。结束服务,web 容器调用 servlet 的 destroy()方法。



2、SERVLET API 中 forward() 与 redirect()的区别?


答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用 forward()方法,并且,这样也有助于隐藏实际的链接。


在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用


sendRedirect()方法。



3、 jsp 有哪些内置对象


request 用户端请求,此请求会包含来自 GET/POST 请求的参数


response 网页传回用户端的回应


pageContext 网页的属性是在这里管理


session 与请求有关的会话期


application servlet 正在执行的内容


out 用来传送回应的输出


config servlet 的构架部件


page JSP 网页本身


exception 针对错误网页,未捕捉的例外



4、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么?


JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。


JSP 编译后是"类 servlet"。Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是 在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。



5、MVC 的各个部分都有那些技术来实现?如何实现?


MVC 是 Model-View-Controller 的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB 组件实现), View 是应用的表示面(由 JSP 页面产生),Controller 是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。



6、MVC 的各个部分都有那些技术来实现?如何实现?


MVC 是 Model-View-Controller 的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB 组件实现), View 是应用的表示面(由 JSP 页面产生),Controller 是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。



7、Tomcat 的优化经验


答:去掉对 web.xml 的监视,把 jsp 提前编辑成 Servlet。

小讯
上一篇 2025-01-02 12:30
下一篇 2024-12-26 19:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/5813.html