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域
前端控制器向用户响应结果
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注解是一个用来处理请求地址映射的注解,可用于类上、方法上,类上表示以该地址为父路径