首页 > Java资讯 > 2020年Java高级面试题整理

2020年Java高级面试题整理

更新时间:2020-04-03 16:18 浏览152次 来源:动力节点


  Java程序员面试考点包括Java基础语法、集合、设计模式、多线程、JDK源码、框架、数据库、数据结构和算法分析等等。本文针对这些考试重点知识,整理汇总了2020年Java高级面试题


2020年Java高级面试题整理


  servlet执行流程


  客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对应的servlet,并将request、response对象传递给找到的servlet,servlet根据request就可以知道是谁发出的请求,请求信息及其他信息,当servlet处理完业务逻辑后会将信息放入到response并响应到客户端。


  springMVC的执行流程


  springMVC是由dispatchservlet为核心的分层控制框架。首先客户端发出一个请求web服务器解析请求url并去匹配dispatchservlet的映射url,如果匹配上就将这个请求放入到dispatchservlet,dispatchservlet根据mapping映射配置去寻找相对应的handel,然后把处理权交给找到的handel,handel封装了处理业务逻辑的代码,当handel处理完后会返回一个逻辑视图modelandview给dispatchservlet,此时的modelandview是一个逻辑视图不是一个正式视图,所以dispatchservlet会通过viewresource视图资源去解析modelandview,然后将解析后的参数放到view中返回到客户端并展现。


  给定一个txt文件,如何得到某字符串出现的次数


  File file = new File("E://test.txt");

  InputStream is = new FileInputStream(file);

  byte b[] = new byte[1024];

  int a = is.read(b);

  String str[] = new String(b,0,a).split("");

  int count = 0;

  for(int i = 0;i<str.length;i++){< p="">

  if("a".equals(str[i]))count++;

  }

  System.out.println(count);


  Java设计模式思想


  a) 单例模式:单例模式核心只需要new一个实例对象的模式,比如数据库连接,在线人数等,一些网站上看到的在线人数统计就是通过单例模式实现的,把一个计时器存放在数据库或者内存中,当有人登陆的时候取出来加一再放回去,有人退出登陆的时候取出来减一再放回去,但是当有两个人同时登陆的时候,会同时取出计数器,同时加一,同时放回去,这样的话数据就会错误,所以需要一个全局变量的对象给全部人使用,只需要new出一个实例对象,这就是单例模式的应用,并且单例模式节省资源,因为它控制了实例对象的个数,并有利于gc回收。


  b) 策略模式:就是将几个类中公共的方法提取到一个新的类中,从而使扩展更容易,保证代码的可移植性,可维护性强。比如有个需求是写鸭子对象,鸭子有叫,飞,外形这三种方法,如果每个鸭子类都写这三个方法会出现代码的冗余,这时候我们可以把鸭子中的叫,飞,外形这三个方法提取出来,放到鸭父类中,让每个鸭子都继承这个鸭父类,重写这三个方法,这样封装的代码可移植性强,当用户提出新的需求比如鸭子会游泳,那么对于我们oo程序员来讲就非常简单了我们只需要在鸭父类中加一个游泳的方法,让会游泳的鸭子重写游泳方法就可以了。


  c) 工厂模式:简单的工厂模式主要是统一提供实例对象的引用,通过工厂模式接口获取实例对象的引用。比如一个登陆功能,后端有三个类,controller类,interface类,实现接口的实现类。当客户端发出一个请求,当请求传到controller类中时,controller获取接口的引用对象,而实现接口的实现类中封装好了登陆的业务逻辑代码。当你需要加一个注册需求的时候只需要在接口类中加一个注册方法,实现类中实现方法,controller获取接口的引用对象即可,不需要改动原来的代码,这种做法是的可拓展性强。


  冒泡排序、二分查找


  a) 冒泡

  public static void mp(int a[]) {

  int swap = 0;

  for (int i = 0; i < a.length; i++) {

  for (int j = i; j < a.length; j++) {

  if (a[j] > a[i]) {

  swap = a[i];

  a[i] = a[j];

  a[j] = swap;

  }

  }

  }

  System.out.println(Arrays.toString(a));

  }

  b)二分查找

  public static int ef(int a[], int tag) {

  int first = 0;

  int end = a.length;

  for (int i = 0; i < a.length; i++) {

  int middle = (first + end) / 2;

  if (tag == a[middle]) {

  return middle;

  }

  if (tag > a[middle]) {

  first = middle + 1;

  }

  if (tag < a[middle]) {

  end = middle - 1;

  }

  }

  return 0;

  }


  a) Ajax为异步请求,即局部刷新技术,在传统的页面中,用户需要点击按钮或者事件触发请求,到刷新页面,而异步技术为不需要点击即可触发事件,这样使得用户体验感增强,比如商城购物车的异步加载,当你点击商品时无需请求后台而直接动态修改参数。


  父类与子类之间的调用顺序(打印结果)


  a) 父类静态代码块


  b) 子类静态代码块


  c) 父类构造方法


  d) 子类构造方法


  e) 子类普通方法


  f) 重写父类的方法,则打印重写后的方法


  内部类与外部类的调用


  a) 内部类可以直接调用外部类包括private的成员变量,使用外部类引用的this.关键字调用即可


  b) 而外部类调用内部类需要建立内部类对象


2020年Java高级面试题整理


  以上就是动力节点java培训机构的小编针对“2020年Java高级面试题整理”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


热门课程推荐

全部班型支持免费试学

动力节点在线报名表(此信息已加密,请放心填写)

返回顶部