一、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的作用域有哪些?分别作用范围?有什么区别?
八、总结
以上是最近从面试题中找到的精选