重要面试题

1.ajax原理与执行步骤:

  异步刷新技术

    ①、获取ajax异步对象(XmlHttpRequest)

    ②、选择请求方式get、post

    ③、使用send函数来发送请求

    ④、判断向服务器发送请求状态(0~4)

    ⑤、服务器请求状态完成readState==4

    ⑥、判断客户端响应状态status==200

    ⑦、接收服务端的返回数据并执行回调函数

2.springMvc执行原理:

  ①、客户端向核心处理器发出请求

  ②、核心处理器调用处理器映射(HandlerMapping),解析对应的Handler

  ③、将解析后的Handler返回给核心处理器

  ④、核心处理器请求处理器适配器(HandlerAdatper)执行Handler

  ⑤、处理器适配器(HandlerAdapter)根据Hnadler规则执行Handler

  ⑥、Handler执行完毕后将返回一个modelAndview给处理器适配器

  ⑦、处理器适配器将modelAndview返回给核心处理器

  ⑧、核心处理起调用视图解析器进行解析

  ⑨、将解析完的视图返回给核心处理器

  ⑩、核心处理器将试图讲给视图渲染器进行渲染

  ⑪、渲染完成后返回给核心处理器

  ⑫、核心处理器将视图返回给客户端

3.jsp与servlet原理与区别

  jsp(java Server pages)java服务器页面:

    java代码与html页面共存

  servlet:

    服务器端运行的程序

  区别:

    jsp编译后就是servlet

    jsp是页面的表示servlet是逻辑的表示

    jsp侧重于视图、 servlet类似一个controller主要做控制

4.jsp九大隐式对象:(jsp提供可直接使用)

  request

  response

  cookie

  session

  application

  out

  page

  config

  pageContext

5.spring常用注解

  @Component

  @Service  逻辑业务层(表示是一个service)

  @Repository 数据访问层(表示一个jpa的dao层)

  @Controller 控制层(表示一个controller层)

  @Autowried (bean的注入)

  @Bean

  aop相关:

  @Before

  @After

  @Around

6.SpringMvc相关注解:   

  @RequestMapping

  @RequestBody

  @ResponseBody

  @PathVariable

  @RequestController

7.重写与重载

  重写:基于父子类中 子类重写父类的方法

    方法名相同、参数相同、返回类型相同、异常小于父类、修饰范围大于父类

  重载:基于本类之间

    方法名相同,参数个数、类型、顺序不同,返回类型无关

8.Xml和Html区别

  Xml:可扩展标记语言

    一般多用来多数据文件的配置

    Xml中标签必须成对出现 可自定义标签

    Xml可用来传输数据

    Xml区分大小写

    严禁标签交叉嵌套

  Html:超文本标记语言

    Html标签是固定的 不可自己定义

    标签可以有单标签

    Html是静态的用于显示数据

    Html不区分大小写

9.get和post区别

  get:

    参数可在地址栏上显示

    长度有限

    不安全

  post:

    参数不可在地址栏上显示

    长度理论无限

    相对安全

10.maven:

  项目管理工具

  作用:

    管理依赖  

    创建项目工程

    编译代码

    自动运行单元测试

    部署项目、生产web站点

    生成报表

  命令:

    clean  清除内容

    compile  编译源代码

    package  打包

    test  测试

    install  安装

11.mybatis的分页,分页插件的原理

  PageHelper利用这一点通过拦截器获取到同一线程中的预编译好的SQL语句之后将SQL语句包装成具有分页功能的SQL语句,并将其再次赋值给下一步操作,所以实际执行的SQL语句就是有了分页功能的SQL语句
  oracle
  select* from (select rownum r ,d.* from dept d) where r between a and b

  以上逻辑仅限于底数据量的分页查询(mysql 30w以下,oracle 100w以下)
  大数据量分页,oracle使用 row_number()做分页

12.二分法查找

  先按一定顺序排序  然后折半查找

13.单例模式

  只能获取一个对象

  构造器私有化;通过公有的方法来获取对象

  懒汉式:

    使用时创建(线程不安全的)

  饿汉式:

    加载类时创建(线程安全的)

14.mybatis的mapper接口注意内容:

  mapper中的方法不能重载、方法名唯一、参数与xml中类型一致

15.mybatis中配置mapper的方法:

  namespace=mapper全类名

  id=mapper中的方法名

16.tcp/ip网络模型(OSI七层)

  物理层

  数据链路层

  网络层

  传输层

  会话层

  表示层

  应用层

17.BIO与NIO区别AIO

  BIO:

    同步阻塞流

    数据读写必须一个接一个完成

  NIO:

    同步非阻塞

    一个线程轮流询问

  AIO:

    异步非阻塞

 

18.springBoot和springmvc区别 boot自动装配原理:

  springBoot项目中启动类中@SpringBootConfiguration中@EnableAutoConfiguration表示开启自动装配.

  spring代理模式:

    aop cglib代理

        代理对象不是实现类

      jdk代理:

        针对目标对象实现了接口

  springmvc是web框架 

  springboot是用来简化ssm框架简化开发的

 

19.重写与重载区别?

  重写:

    基于父子类之间

    子类重写父类的方法  方法名相同、参数相同、返回值类型必须小于等于父类类型、异常小于等于父类异常、修饰范围大于等于父类  

  重载:

    基于本类之间

    方法名相同,参数顺序、类型、个数不同,与返回值类型无关     

20.集合体系

  单例集合:

    Collection:

       set(不可重复):

          Hashset(无序、底层是哈希表)

          TreeSet(有序、底层是红黑树)

          LinkedHashSet(有序、底层是链表和哈希表)

       list(有序、可重复):

          ArrayList(底层数组查询快、增删慢)

          Vector(底层数组查询快、增删慢、线程安全)

          LinkedList(底层是链表、查询慢、增删快)

  键值对集合:

      Map:

          Hashtable(无序的、线程安全的、不允许key为null)

          TreeMap(有序的)

          HashMap允许null值(key和value都允许)

21.接口与抽象类

     接口:

        接口可以多继承、多实现

        接口中只能有抽象方法

        无构造

     抽象类:

        被abstract修饰

        只能单继承

        可以有属性、其他方法、构造

22.创建线程的三种方式?

  继承Thread

  实现runnable

  实现callable

23.@Resource与@Autowired的区别?

  @Resource

    默认按name自动注入

  @Autowried

    默认按类型装配         

24.drop、delete、truncate的区别?

  drop:

    直接删除表(有日志可恢复)

  delete:

    删除表内容、不删除索引(有日志可恢复)

  truncate:

    删除内容、释放内存(不可恢复)

25.JVM内存模型

  堆

  本地方法栈

  虚拟机栈

  程序计数器

  方法区

26.垃圾回收机制

  新生代

    Ende

       内存满触发Young GC

  老年代

    Full GC  

      永久代空间不足,会触发Full GC

      System.gc()也会触发Full GC

  永久代

27.ql优化的方式?

  减少or、not、!=、in、运算表达式等降低索引的查询

  使用索引查询

28.简述sql语言?

  DDL(数据定义语言)

    create、drop等

  DML(数据操作语言)

    delete、insert、update

  DCL(数据控制语言)

  DQL(数据查询语言)

29.如何解决session共享?

  使用redis缓存 将session放入redis缓存中实现共享

  Tomcat实现session复制