无所谓的一些面试题,可能有用

1.springMVC 工作流程
    用户发送请求到前端控制器DispatcherService
    前端控制器收到请求调用HandlerMapping处理器映射器
    处理器映射器找到具体的处理器,生成处理对象及处理拦截器一并返回给前端控制器
    前端处理器调用处理适配器
    处理适配器调用具体的处理器controller 也叫后端控制器
    controller 执行完后返回modelAndView 返回到前端处理器
    前端处理器将结果传给视图解析器
    viewRslove将数据解析,返回视图view
    前端再将view处理渲染,响应用户
2.spring一些注解
    @component : 基本注解,声明表示为spring的一个组件
    
    @controller 表示一个表示层的组件 控制器
    
    @service 表示一个业务层的组件 处理业务
    
    @Mapper 表示持久层的业务
    
    @Repository 表示持久层的组件
    
    @Autowired 自动装配
    
    @RequestMapping 完成请求映射
    
    @PathVariable 处理请求路径的参数
    
    @requestBody 接受前端的数据,将数据转化成对象


3.springMVC 中如何返回JSON数据
        首先有 在项目加入接送转换json转换依赖 ,工具有fastJson gson等
        在方法中将数据转化成Json
        利用@ResponseBody 将数据传送给前端
4.spring 理解
    spring是一个开源框架,为企业开发而生的一个框架 ,spring是一个IOC和AOP 的容器框架
    
    IOC 也叫控制反转,传统的Java开发模式中,需要一个对象的时候需要自己new 创建一个对象,
    而在spring开发模式中,spring容器使用工厂模式为我们创建所需要的对象,不需要我们自己创建了
    直接调用sping对象就好了 这就是控制反转的思想。
    依赖注入(DI) 加入注解,类中的内容自动映射到所设置的值中
    AOP 面向切面编程
        我们将对象的某些相似的方面抽成一个切面, 对这个切面进行权限的控制,事务的管理,记录日志啥的
        公用的操作处理的过程就是面向切面编程思想。

5 spring的常用的设计模式
    工厂模式 在工厂模式中我们不对客户端暴露处理逻辑,并通过使用同一个接口来指向新创建的对象,spring总使用
    beanFactory来创建对象实例;
    
    模板模式 将重复的代码封装成模板类
    
    单例模式 值spring的配置文件中加入@bean的,默认就是单例模式
    
    代理模式 spring中两种代理方式,若目标对象实现了若干接口,spring使用jdk的java.lang.reflect.Proxy类代理
    若目标兑现没有实现任何接口,spring使用GGLIB 库生成目标子类
    
6 spring 三级缓存
    
    
7.集合的简单体系

    iterator 1 数组 collection ->[set[hashSet,treeSet],list[ArrayList,LinkedList]}
             2 映射关系 map ->[hashMap[linkedHashMap],treeMap] 
    
    ArrayList 和 LinkedList区别
            ArrayList 实现基于动态数组 对于随机访问的get set 方法 ArrayList的效率高于LinkedList,因为LinkedList需要移动指针
            
            LinkedList 实现基于链表 对于新增和删除 LinkedList比较占优势,因为ArrayList需要移动数据
            
            对于单条的数据的插入和删除ArrayList的速度高于LinkedList ,批量删除就不好用了
            
    HashMap 底层源码,数据结构
            HashMap 的底层结构在jdk1.7之前 默认初始容量为16 是数组和链表,
            JDK1.8中有数组和链表加红黑树来实现 扩容到了64
            
            HashMap 基于哈希表的MAp接口实现,以Key-Value存储形式来存在,存放键值对。
            HashMap 是线程不安全的,key v 都可以为null HashMap 映射不是有序的
            数组是HasHMap的主体,链表主要解决hash冲突而存在的,而当链表长度大于阈值时,默认值为8,并且当前数组的长度大于64时,
            此索引位置的所有数据转化为红黑树存储。
        为什么用数组链表,红黑树
            根据对象的key的hash值存放在数组的那个节点
            链表解决hash冲突,
            红黑树解决链表过长可能影响性能,利用红黑树来提高查寻性能
            
    HashMap和HashTable区别
        hashMap 线程不安全 多线程使用必须要加自己的同步处理
        提供containsValue 和containsKey 
        允许key v  null ,但key为null只能有一个
        默认容量 16
        
        hashtable 线程安全 利用synchronize的 
        提供containsValue 和containsKey 和contains k v 都不能为空
        默认容量 11
        
        数组初始化和扩容机制
        HashTable在不指定容量的情况下的默认容量为11,而HashMap为16,Hashtable不要求底层数组的容量一定要为2的整数次幂,而HashMap则要求一定为2的整数次幂。
        Hashtable扩容时,将容量变为原来的2倍加1,而HashMap扩容时,将容量变为原来的2倍。
                    

8.线程的创造方式
        1. 继承Thread 类
        2. 实现Runnable接口创建线程
        3. 使用Callable和future 创建线程
        4. 使用线程池来创建线程
        
    线程的状态转换有什么?(生命周期)    
        1.新建状态 例如 Thread thread =new Thread();
        2.就绪状态 线程对象在创建后,其他线程调用该对象的start()方法,如 thread.start();
        3.运行状态 线程获取CPU的权限进行执行,只能在就绪状态被CPU执行
        4.阻塞状态 线程在运行时放弃CPU的使用权 暂停运行
            阻塞分为三种 等待阻塞 ,同步阻塞 ,其他阻塞 
        5.死亡状态 线程执行完了,或则异常退出RUN方法,结束该线程
        
9. 5个运行时异常RunTimeException
            空指针异常
            指定类找不到异常
            类型转化异常
            数组坐标越界异常
            字符串转化异常
            方法传递参数异常
            计算异常

10.什么是jave的序列化 如何实现
        
        序列化就是一种处理对象流的机制 ,使对象传输于网络之间。
        序列化是为了解决在对对象进行读写操作时所引发的问题。
        如何实现
        将需要序列化的类实现 Serializable 接口,没有需要的实现的方法,只是标注一下,这个类需要实现序列化
 为什么使用线程此
 降低资源的消耗 ,提高响应速度 , 提高线程的可管理性。
        
11.mysql的事务

        事务的基本要素(ACID)
            原子性(A):事务开启后所有的操作要么全部做完,要不全部不做,出错了回滚到执行之前
            一致性(C):事务开始前 和结束后 数据库的完整性约束没有别破坏,比如转账,有多的有少的
            隔离性(I) : 同一时间只允许同一个事务操纵同一数据
            持久性(D) : 事务完成后,事务对数据的所有操作保存到数据库,不能回滚
        MySQL事务隔离级别:
            事务隔离级别                                        脏读        不可重复读        幻读
            读未提交(read-uncommitted)           是            是                是
            读提交(read-committed)                   否            是                是
            可重复读(repeatable-read)               否            否                是
            串行化(serializable)                          否            否                否

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值