前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day05】——Java高级篇

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day05】——Java高级篇

作者头像
陶然同学
发布2023-02-24 15:43:05
1870
发布2023-02-24 15:43:05
举报
文章被收录于专栏:陶然同学博客

Controller和RestController的区别

共同点

        都是用来表示某个类是否可以接收HTTP请求

不同点

        @Controller:标识一个Spring类是SpringMVC controller处理器

        @RestController:@RestController是@Controller和@ResponseBody的结合体 两个注

        解结合起来的作用

        @Controller类的方法可以直接通过返回String跳转到jsp、ftl、html等模板页面 在方法上加

        @ResponseBody注解 也可以返回实体类对象

说说怎么保证线程安全

导致对象线程不安全的原因 主要有三个

1.原子性: 一个或者多个操作在CPU执行过程中被中断

2.可见性:一个线程共享变量的修改 导致另一个线程不能立即看到

3.有序性:程序执行的顺序没有按照代码的先后顺序执行

有序性:

主要理解Java平台的两种编译器 静态编译器javac 动态编译器jit  静态编译器就是将.java文件编译

 器.class文件 JVM加载后就可以直接执行了 而动态编译器就是将.class文件编译成机器码 再由

JVM执行 那么有时候 动态编译器为了程序的整体性能  回对指令进行重排序 但是这又会导致 指定

的内存访问顺序 和 实际的执行顺序不一致

1.针对原子性

       1)JDK提供的Atomic类 通过CAS来保证原子性

       2)Java还提供了各种锁机制 比如synchronized关键字 比如一个线程对资源进行读写操作的时

        候 其他线程不可以对整个资源进行操作

2.针对可见性

        1)使用synchronized关键字加锁来解决

        2)Java提供volatile关键字 比synchronized性能更优 同样保证修改之后 对其他线程可见

        volatile一般用于对变量的写操作 它不依赖于当前值的场景中

3.针对有序性

        1)使用synchronized关键字定义同步代码块或同步方法

        2)通过Lock接口来保证有序性

请说说你对反射的了解

        1.(从定义的角度)反射就是在程序运行期间动态获取对象的属性和方法的功能叫反射

        2.(从功能角度)在程序运行期间 对任意一个类(除了枚举)能够直他的方法和属性 对于任意一个

对象 能够直到他的方法和属性

        3.(从用法的角度)获取class对象的三种方式:getClass(); xx.class;Class.forName("xx)

        4.(从优点及缺点的角度回答)优点:运行期间能够动态的获取类 提高代码的灵活性 缺点:性

能上相比较直接通过类或对象获取方法和属性 要慢的多

        5.(从应用场景的角度回答)例如模型Spring框架、模拟Spring加载XML配置文件、JDBC操作

数据库连接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Controller和RestController的区别
  • 说说怎么保证线程安全
  • 请说说你对反射的了解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档