博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java开发面试中经常问到的问题(2019年5月)
阅读量:4291 次
发布时间:2019-05-27

本文共 3636 字,大约阅读时间需要 12 分钟。

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、隐藏表单域

详细介绍参照:

四个作用域:

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

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

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

application域 数据在一个应用服务器范围内有效,通过application对象访问

可参考其他博客:

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查看及监控日志?

可参考:

比如我们要查看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

详细参照:

 

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里面我们将它称之为永生代
参照:

 

 

7、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)
 

转载地址:http://nchgi.baihongyu.com/

你可能感兴趣的文章
Nginx模块综合简介
查看>>
Java进阶——带你入门分布式中的Nginx
查看>>
MySQL 的 count(*) 的优化,获取千万级数据表的总行数
查看>>
mysql explain用法和结果的含义
查看>>
吃透了这些Redis知识点,面试官一定觉得你很NB
查看>>
程序员,Mybatis 你踩过坑吗?
查看>>
Java开发人员最常犯的9个错误
查看>>
分布式场景下数据一致性的问题——【分布式锁】Java常用技术方案
查看>>
面试必备之乐观锁与悲观锁
查看>>
分享大厂分布式唯一ID设计方案,快来围观
查看>>
腾讯面试:一条SQL语句执行得很慢的原因有哪些?
查看>>
架构:负载均衡
查看>>
阿里面试中遇到的一些架构问题
查看>>
java并发之DelayQueue实际运用示例
查看>>
SpringBoot启动原理及相关流程
查看>>
百度社招面试题——如何用Redis实现分布式锁
查看>>
redis 的并发竞争问题是什么?了解 redis 事务的 CAS 方案吗?
查看>>
关于分布式限流,这几点你必须掌握!
查看>>
搞懂这个,什么分布式锁的面试题都能应对
查看>>
MyBatis自动映射级别和缓存
查看>>