1. ## Java有什么缺点(至少3条)

   数据类型比较多,不支持var变量

   需要运行环境,不适合开发桌面应用程序

   解释型语言,代码量较多,运行效率低,不支持底层操作

2. ## JAVA常见编码规范(说5条)

   **命名风格**

   1. 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束

   2. 类名使用驼峰命名,每个自然语义的单词首字母大写,其他字母小写
   3. 方法和变量是一个单词时,首字母小写,多个单词时,从第二个单词开始,所有的单词的首字母都要大写
   4. 自定义变量所有字母大写,多个单词连接时,使用下划线( _ )连接,主要是字母全部大写之后如果没有分隔符,就很难区分单词,造成理解混乱
   5. 包名要求全部小写, 一般是公司的域名倒着写

3. ## 说出git 命令(至少说6个)并分别说出其含义

   git init :用来初始化git仓库

   git status:用于显示工作目录和暂存区的状态

   git add :将文件的信息添加到索引库中

   git rm --cached  将暂存区的文件恢复到工作区中

   git commit : 将更改的记录提交到存储库中

   git log :显示提交的日志信息

   git reset  --hard  跳到指定版本

   git  reflog  

   git branch  用于列出分支

   git  checkout :用于切换分支

   git merge  代码合并

4. ## Spring中如果发生循环注入会怎样?(a注入b b注入a)

   Bean的生命周期发生了改变,按照xml文件顺序执行bean的实例化,对象a注入属性,找不到b的实例,执行b的实例化,注入b的属性,将半成品的a实例进行引用注入到b的属性中完成b实例化,返回创建对象a的实例.

5. ## SpringMVC中的Bean是线程安全的吗? 说出你的解决方案?

 不是线程安全的,一般默认scope都是单例的bean,单例的bean就会有共享资源的线程安全问题

 可以给个ThreadLocal的成员变量,会给每个线程分配一个本地变量或者方法上加synchronized关键字给共享变量上锁

6. ## SpringMVC的执行流程?

用户通过端口发起请求到前端控制器(DispatcherServlet),

前端控制器请求HanlerMapping查找Handler(可根据xml配置,注解进行查找)

处理器映射器HandlerMapping向前端控制器返回Handler

前端控制器调用处理器适配器去执行Handler

Handler执行完成给适配器返回ModelAndView

处理器适配器向前端控制器返回ModelAndView

前端控制器请求视图解析器去进行视图解析

视图解析器向前端控制器返回View

前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域

前端控制器向用户响应结果

SpringMVC相关面试题

SpringMVC相关面试题

7. ## @RequestBody 和@ResponseBody的区别

   1、@RequestBody接受请求体里面的数据@responseBody用于将数据返回放入到请求体body中

8. ## @RequestParam和@PathViriable的区别
   1、@RequestParam用于映射前端传来的参数@PathViriable用于映射绑定url路径变量

9. ## @Resource和 @Autowired/ @Qualifier的区别

   1、@Resource默认是根据名称去容器中查找,找不到会根据类型查找,@Autowired是根据类型去容器中查找,如果要指定名称去查找需要制定@Qualifier指定名称

10. ## @RequestMapping注解作用

    1、@RequestMappiing注解是一个用来处理请求地址映射的注解,可用于类上、方法上,类上表示以该地址为父路径

相关文章: