java开发面试中经常问到的问题(2019年5月)

1、jsp内置对象有哪些?

  * 在jsp页面中不需要创建,直接使用的对象
        * 一共有9个:
                变量名                    真实类型                        作用
            * pageContext                PageContext                    当前页面共享数据,还可以获取其他八个内置对象
            * request                    HttpServletRequest            一次请求访问的多个资源(转发)
            * session                    HttpSession                    一次会话的多个请求间
            * application                ServletContext                所有用户间共享数据
            * response                    HttpServletResponse            响应对象
            * page                        Object                        当前页面(Servlet)的对象  this
            * out                        JspWriter                    输出对象,数据输出到页面上
            * config                    ServletConfig                Servlet的配置对象
            * exception                    Throwable                    异常对象
2、jsp的四种会话跟踪技术以及jsp中的四个作用域

四种会话跟踪技术:

1、通过Cookie实现 
2、通过session实现 
3、URL地址重写 
4、隐藏表单域

详细介绍参照:jsp的四种会话跟踪技术

四个作用域:

page域  数据在一个页面范围内有效,通过pageContext对象访问

request域 数据在一个服务器请求范围内有效,通过request对象访问

session域 数据在一次会话范围内容有效,通过session对象访问

application域 数据在一个应用服务器范围内有效,通过application对象访问
可参考其他博客:四种会话跟踪技术,JSP的四种范围

3、linux查看端口号

netstat - atulnp会显示所有端口和所有对应的程序,用grep管道可以过滤出想要的字段

-a :all,表示列出所有的连接,服务监听,Socket资料
-t :tcp,列出tcp协议的服务
-u :udp,列出udp协议的服务
-n :port number, 用端口号来显示
-l :listening,列出当前监听服务
-p :program,列出服务程序的PID
常用:

netstat -a #列出所有端口

netstat -at #列出所有tcp端口

netstat -anp

netstat -ntlp   //查看当前所有tcp端口·

netstat -ntulp |grep 80   //查看所有80端口使用情况·

netstat -an | grep 3306   //查看所有3306端口使用情况·

linux查看及监控日志?

可参考:Linux如何动态查看日志信息?

比如我们要查看laravel.log日志的内容:

 

1、tail -f laravel.log

该条命令会输入laravel.log的变化,实现时时监控的目的

 

2、tail -n 3 laravel.log

该条命令会输出倒数前3条的日志内容

 

3、tail -n +3 laravel.log

该条命令是从日志的第三条开始打印日志的内容

 

四、停止命令:
 

1、ctrl+C

2、kill -9 pid


详细参照:Linux下如何实时查看日志

 

4、垃圾回收器工作机制,GC 的算法有哪些?

5、ajax的作用,以及ajax的写法

使用jquery的三种写法:

方法一: $.ajax(url,data,fn);

$('#btn').click(function(){
  $.ajax({
    url:"112.json",
    type:"post",
    data:{
      //传递参数
    },
   success:function(res){//res表示是否与服务器连接成功
    console.log(res);//json中的数据
    if (res.status == 'ok') {//当状态为ok时,显示json中的数据
      console.log(res.datas[0].name);

    }else{
      alert('没有相关数据');
    }
  },
  error:function(e){
    // 抛弃异常
  }
 });
});

112.json中的内容 

{
"status":"ok",
"datas":[
{"name":"lxs","age":"111"},
{"name":"ssx","age":"1222"}
]
}

方法二:

$.post(URL,data,callback);

$.post("112.json",{
  "activeName":activeName,
  "sels":sels,
  "sels2":sels2,
  "start":start,
  "end":end
  },function(res){
    if (res.message == '0') {
    alert('成功');
    // 向tbody中添加数据
  }
});

方法三:$.get(url,callback);

$('#btn').click(function(){
  $.get("112.json",function(res){

    if (res.status == 'ok') {
    alert('成功');
    // 向tbody中添加数据
    }
  });

}

6、jvm的内存模块

JVM内存运行时数据区的三个重要的地方

堆(heap) : 他是最大的一块区域,用于存放对象实例和数组,是全局共享的.
栈(stack) : 全称为虚拟机栈,主要存储基本数据类型,以及对象的引用,私有线程
方法区(Method Area) : 在class被加载后的一些信息 如常量,静态常量这些被放在这里,在Hotspot里面我们将它称之为永生代
参照:JVM相关面试题及答案

 

 

7、redis如何实现与mysql的数据一致性?

回答思路不清晰,我自己没回答上来。

可以参考:redis系列之数据库与缓存数据一致性解决方案

或者:Redis 缓存和 MySQL 数据如何实现一致性?

redis与Mysql的数据一致性

8、AOP是什么?项目中哪些地方会用到AOP?

面向切面编程(AOP)提供另一种角度来思考程序结构,通过这种方式弥补了
面向对象编程(OOP)的不足,除了类(classes)以外,AOP提供了切面。
切面对关注点进行模块化,例如横切多个类型和对象的事务管理。
Spring的一个关键的组件就是Aop框架,可以自由选择使用AOP提供声明式企业服务,特别是为了替代EJB声明式服务。最重要的服务是声明性事务管理,这个服务建立在Spring的抽象事务管理上,允许用户自定义切面,用AOP来完善OOP的使用,可以把Spring Aop看做是对Spring的一种增强!
AOP里面重要名词解释:
切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象,事务管理是j2ee应用中的一个关于和企鹅关注点的很好的例子。在Spring AOP中,切面可以使用通用类或者普通类中以@Aspect注解来实现。
AOP代理(AOP Proxy):AOP框架创建的对象,用来实现切面契约(包括通知方法执行等功能),在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。
引入(Introduction): 添加方法或字段到被通知的类。 Spring允许引入新的接口到任何被通知的对象。
目标对象(Target Object): 包含连接点的对象。也被称作被通知或被代理对象。POJO
前置增强:在某个链接之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)
返回后增强:在某个链接正常完成执行的通知。例如:一个方法没有抛出任何异常,正常返回。
抛出异常后增强:在方法抛出异常退出时执行后的通知。
后置增强:当某连接点退出的时候执行的通知。(不论是正常返回还是异常退出)
环绕增强:包围一个连接点的通知。如方法的调用,这是最强大的一种通知类型,环绕增强可以在方法调用前后完成自定义的行为,它也会选择是否继续执行连接点或直接返回他们自己的返回值或抛出异常来结束执行。
环绕增强是最常见的一种通知类型,大部分基于拦截的AOP框架,例如nanning和Jboss4
AOP的优点:
1-降低模块之间的耦合度。
2-使系统容易扩展。
3-更好的代码复用。
AOP的应用场景:
1.日志处理
2.用户登录
3.权限(Authentication )
4.性能优化(Performance optimization)
5.事务(Transactions )
6.记录跟踪 优化 校准(logging, tracing, profiling and monitoring)
7.调试(Debugging)
8.懒加载(Lazy loading)
9.错误处理(Error handling)
10.资源池(Resource pooling)
11.同步(Synchronization)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值