Java开发面试(持续更新)

文章目录

一、集合

1.数组和集合的区别

  • 数组的效率高于集合类
  • 数组能存放基本类型和对象,而集合类中只能存放对象
  • 数组长度不可变,集合长度可变
  • 集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性调用即可实现各种复杂操作,大大提高软件的开发效率

二、Vue

1.Vue常用的组件有哪些

  • axios 使用axios实现前后端数据交互
  • easyUI 轻松的打造出功能丰富并且美观的UI界面
  • xlsx 实现前端解析xlsx文件内容
  • vue-json-excel 将后台的json数据导出excel表格

三、数据库

1.多表查询

  • 左连接(左外连接)
作用:在内连接的基础之上,保全左表的全部数据,右边没有的数据用NULL替代。
格式:select 列名 from 左表 left join 右表 on 从表.外键=主表.主键

SELECT * FROM emp e LEFT JOIN dept d ON e.`dept_id` = d.`id`
  • 右连接(右外连接)
 作用:在内连接的基础之上,保全右表的全部数据,左边没有的数据用NULL替代。
 格式:select 列名 from 左表 right join 右表 on 从表.外键=主表.主键
 
SELECT * FROM emp e  RIGHT JOIN dept d ON e.`dept_id` = d.`id`
  • 子查询 (一般而言在一个查询中,可以嵌套另一个查询. 子查询是一个完整的的SELECT语句)
-- a.子查询是单行单列的情况 原理:实际上就是子查询出来的结果是一个值,外部sql可以使用:= > >= < <= != ...

-- 查询工资大于5000的员工的部门名称
SELECT NAME FROM dept WHERE id IN (SELECT dept_id FROM emp WHERE salary > 5000)

-- b.子查询: 多行单列的情况 原理:实际上就是子查询的结果是多个值,可以当数组使用  外部查询可以使用 IN / ANY / ALL
SELECT * FROM emp WHERE salary > (SELECT MAX(salary) FROM emp WHERE dept_id = 1) 

 -- c.多行多列的情况原理:子查询出来的结果实际上就是一个新表,可以继续当虚拟表使用
SELECT e.*  , d.name 部门名称 FROM (SELECT * FROM emp WHERE join_date >= '2011-01-01') e
LEFT JOIN dept d ON e.dept_id = d.id;

四、框架

1、SpringBoot常用的注解

  • @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
  • @Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。
  • @EnableAutoConfiguration 自动配置。
  • @ComponentScan 组件扫描,可自动发现和装配一些Bean。
  • @Controller:注解在类上,表示这是一个控制层bean
  • @Service:注解在类上,表示这是一个业务层bean
  • @Value:注解在变量上,从配置文件中读取。
  • @RequestMapping:作用就是映射URL路径,将http的请求地址映射到控制器(controller)类的处理方法上
  • @Responsebody:一般在异步获取数据时使用,将java对象转为json格式的数据
  • @CrossOrigin():解决跨域问题
  • @PostMapping:处理post请求

2、SpringBoot的优点(习惯优于配置)

  • 独立运行
    内嵌各种Servlet容器,Tomcat、Jetty等,只要打成一个Jar包就能独立运行(部署)
  • 简化配置
    spring- boot-start-web启动器自动依赖其他组件,减少了maven的配置
  • 自动配置
    SpringBoot能根据当前类路径下的类、jar包自动配置Bean
  • 应用监控
    SpringBoot提供一系列端点可以监控服务及应用
上一篇:【JavaWeb】多表查询、事务、DCL


下一篇:mysql多表查询