java面试题精选

2022-05-12 20:40:52 浏览数 (1)

一、tomcat运行原理:

1. Tomcat需要main方法启动,创建实例:server。

2. Tomcat需要监听本机上的某个端口,主要有8005,8043,8080。

3. Tomcat需要抓取此端口(8080)上来自客户端的链接并获得请求调用的方法与参数。

4. Tomcat需要根据请求调用的方法,动态地加载方法所在的类,完成类的实例化并通过该实例获得需要的方法,最终将请求传入方法执行。

5. 将结果返回给客户端(jsp/html页面、json/xml字符串)。

二、描述spring是如何工作的?

(1)通过IOC控制反转模式将组件间的依赖关系从程序内部转变到外部来管理,由容器控制程序之间的依赖关系,而非传统实现中,由程序代码直接操控。

(2)通过依赖注入DI将组件的依赖通过外部以参数或者其他形式注入,即组件之间的依赖关系由容器在运行期决定,由容器动态的将某种依赖关系注入到组件之中。

(3)使用AOP面向切面编程,将一些横向的功能抽离出来形成一个独立的模块,然后在指定位置插入这些功能,将日志记录,性能统计,安全控制,事务处理,异常处理等代码从逻辑代码中分离出来,从而使业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发效率。

三、JVM运行原理

(1)java源文件经编译器,编译成字节码(其中方法被编译成字节码指令)

(2)通过类加载器将字节码加载到虚拟机内存,并将字节码所代表的静态存储结构转化为方法区的运行时数据结构。

(3)通过JVM解释器将每一条字节码指令翻译成特定平台上的机器码,然后通过特定平台运行。

四、java中包装类与基本数据类型区别?

(1)包装类比基本数据类型占空间少。

(2)基本类型存放在栈,包装类型存放在堆里

(3)包装类是对象,拥有方法,基本类型没有

(4)泛型只能使用引用数据类型,所以只能使用包装类。

五、shiro权限标签及其用处?

<shiro:guest>验证当前用户是否是访客

<shiro:user> 验证是否为认证通过或者已经记住的用户

<shiro:authenticated> 已经通过的用户,不包括已经记住的用户

<shiro:principal> 输出当前用户信息

<shiro:hasRole name=""> 验证是否拥有该角色

<shiro:hasPermission name="">验证是否拥有该权限

六、servlet的生命周期?

Servlet的生命周期包含了下面四个阶段:

1、加载和实例化

当Servlet容器启动或客户发送一个请求时,Servlet容器会查找内存中是否存在servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例。

2、初始化

实例化后,Servlet容器将调用Servlet的init()方法进行初始化

3、请求处理

初始化后,Servlet处于能响应请求的就绪状态。当接受到客户端请求时,调用service()的方法处理客户端请求,HttpServlet的service()方法会根据不同的请求转调不同的doget()或者doPost()方法。

4、服务终止

当servlet容器关闭时,Servlet实例也随时销毁。其间,Servlet容器会调用servlet的destroy()方法去判断该Servlet是否应当被释放。

七、java的作用域有哪些?分别作用范围?有什么区别?

八、总结

以上是最近从面试题中找到的精选

0 人点赞