面试题汇总

本文总结了Java核心领域的关键知识点,包括缓存机制、设计模式、事务管理等,详细介绍了Spring框架的优势,以及各种集合类和数据库操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:一级缓存和二级缓存是什么?各自的应用场景是什么?hibernate与mybatis区别?

         一级缓存是默认开启的,当创建session的时候,为session分配一块内存空间,用于存放session查询的数据,这块内存就成为session;

         二级缓存是sessionfactory级别的,便于session对象之间空享数据二级缓存用于经常用到的,很少修改的数据和对象,哪些类是经常用到的很少修改的就使用二级缓存;

        对象数据频繁共享,数据变化频率低;

2:享元模式和单例模式的区别是什么?

      享元模式是对象级别的,可以有多个对象实例,多个变量引用同一个对象实例;

      单例模式是类级别的,一个类只能有一个对象实例;

3:事务管理是在哪一层织入的?(业务层)

4:String常用方法?

1)  string.indexOf(str);找不到返回-1;

String str = "  fan cheng kai  ";
str.length();
str.trim();
str.toUpperCase();
str.toLowerCase();
str.equals("fan");
str.endsWith("kai");
str.valueOf(100);
str.replace("a", "z");
str.substring(3, 8);

5:控制器是单例还是多例的?单例

6:list与数组的区别?

1):数据是大小固定的,而list的大小可以变化;

2):数组可以存储基本类型数据和引用类型数据(基本类型/引用类型),而list只能存储引用类型变量;

3):数组只能存储类型一样的数据,而list不做要求;

4):list按放入的顺序来给数据排序,而数据按照下标排序;

7:list和set如何排序?实现comparable接口或者在collections.sort(list,new comparator())里加入比较器

set没有排序的方法,可以Set set = new TreeSet(),TreeSet存储的时候已经是排好序的

8:list中有哪些线程安全集合?vector

9:多态有多少种?如何实现?

      1)继承;

      2)重写;

      3)父类引用指向子类对象 

10:数组是如何实现扩容的?

        声明一个容量大的数组,将原来的数组放入其中,再给元素从新排序

11:list的初始容量的设置?

12:mybatis如何防止sql注入?

13:说说spring容器的有点?

       spring面向接口编程

1):IOC,对象的创建,对象之间的依赖关系交给容器来设置,降低了对象之间的耦合度;

2):AOP面向切面编程,将通用代码与业务代码分离,便于开发人员专注于业务的开发和维护;

14:aop的优点和应用?(遇到2次了)      

比如在对每个表结构或者数据对象进行save update (CRUD操作)操作时 需要生成创建者 创建时间 修改者 修改时间 ,如果自己手写,工作量比较大,这时就需要aop

性能监测,访问控制,事务管理、缓存、对象池管理以及日志记录

将通用代码与业务代码分离,便于业务开发及维护

15:容器中为何设置单例?共享数据

16:一个系统有的能登入?有的登不上?有的登入之后速度很慢?分析原因?

17:exits与in,not exits,not in的区别?

       还有not exits用法要看看

1):外表大 内表小用in,外表小内表达用exits;

2):exits外表用loop 循环 ,每次循环再对内表查询;

3):in对主查询使用索引,exits对内表使用索引,not in 不使用索引,not  exits 主子查询都使用索引;

18:oracle如何实现行转列?

select sname,  
       wmsys.wm_concat(score) over(partition by sname order by sub) subs  
       from student

select sname, max(subs) subs  
          from (select sname,  
                       wmsys.wm_concat(score) over(partition by sname order by sub) subs  
                  from student) tabs  
         group by sname

select sname,  
       subs,  
       REGEXP_SUBSTR(subs, '[^,]+', 1, 5, 'i') 语文,  
       REGEXP_SUBSTR(subs, '[^,]+', 1, 2, 'i') 数学,  
       REGEXP_SUBSTR(subs, '[^,]+', 1, 4, 'i') 英语,  
       REGEXP_SUBSTR(subs, '[^,]+', 1, 3, 'i') 物理,  
       REGEXP_SUBSTR(subs, '[^,]+', 1, 1, 'i') 化学  
  from (select sname, max(subs) subs  
          from (select sname,  
                       wmsys.wm_concat(score) over(partition by sname order by sub) subs  
                  from student) tabs  
         group by sname) tab  

19:spring mvc流程?

       1)浏览器发出请求,交给前端控制器DispatchServlet处理      

       2)前段控制器通过requestmapping找到对应的控制器组件处理请求

       3)控制器处理请求,返回一个modelAndView对象,封装了数据和视图名称

       4)交给视图解析器viewResolver根据视图名称找到对应的jsp,生成响应界面

20:spring的作用域?

       singleton

       prototype

       session

       request

       global session

21:解释下spring事务?

       对多表进行crud操作时,要么都成功,要么都不成功所执行的一系列动作称为事物

       声明式事务     

22:单例模式从哪几个方面考虑?

23:说说prototype?

        为js对象增加属性和方法

24:转发与重定向区别?

        转发是重新发送一次请求,地址栏会发生改变,不会共享数据;重定向是同一个web应用中的一个组件把未完成的任务交给另一个组件,地址栏不变,可以空享数据

25:数据库约束有几种?

       unique 

       not null

       primary key

       foreign key

       check

26:sql删除重复语句?

create sequence s_test start with 1 increment by 1;     

select * from test_info where id in(select min(id) id from test_info t group by t.name) ;

27:java与json之间的转换?    

     * java对象与json对象互相转换 
        /** 
         * 创建java对象 
         */  
        Student student = new Student();  
        student.setId(1);  
        student.setName("jag");  
        student.setSex("man");  
        student.setAge(25);  
        student.setHobby(new String[]{"篮球","上网","跑步","游戏"});  
        /** 
         * java对象转换成json对象,并获取json对象属性 
         */  
        JSONObject jsonStu = JSONObject.fromObject(student);  
        System.out.println(jsonStu.toString());  
        System.out.println(jsonStu.getJSONArray("hobby"));  
        /** 
         * json对象转换成java对象,并获取java对象属性 
         */  
        Student stu = (Student) JSONObject.toBean(jsonStu, Student.class);  
        System.out.println(stu.getName());  
        /** 
         * 创建json对象 
         */  
        JSONObject jsonObj = new JSONObject();  
        jsonObj.put("id",1);  
        jsonObj.put("name","张勇");  
        jsonObj.put("sex","男");  
        jsonObj.put("age",24);  
        //jsonObj.put("hobby",new String[]{"上网","游戏","跑步","音乐"});  
        //System.out.println(jsonObj.toString());  
        /** 
         * json对象转换成java对象 
         */  
        Student stud = (Student) JSONObject.toBean(jsonObj,Student.class);  
        System.out.println(stud.getName());         

28:oracle pass fail?

select id,
       name,
       (case
         when to_number(score) >= 60 then
          'pass'
         else
          'fail'
       end) as 等级
  from test_info

select id, name, decode(sign(score - 60), -1, 'fail', 'pass')
  from test_info

29:jsp与servlet区别?

      jsp前端展示,包含html,java代码,客户端脚本,servlet 主要运行于服务器端,接受请求,发送响应

30:内部类有几种?

     静态内部类 非静态内部类 局部内部类 匿名内部类

31:servlet的生命周期?

       1)实例化servlet

       2)初始化initi方法 

       3)service方法

      4)destory销毁

32:标准标签库有哪些常见标签?

       <c:if>

       <c:choose>

       <c:foreach>

33:jdbc中statement与preparedStatement区别?

34hibernatemybatis区别?

    Mybatis需要手写大量sql语句,hibernate可以自动生成,偶尔会写一些hql;

    Mybatis的工作量比hibernate大很多;

    涉及到数据库字段的修改,hibernate修改的地方少,mybatis需要把sql mapping的地方一一修改



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值