助你拷打面试官day05,看看你能回答出来吗?

11 阅读1分钟
  1. mybatis的#和$的区别

答案:#是预编译,会把参数变成?占位符,能防止 SQL 注入;$是字符串拼接,直接把参数拼进SQL,有注入风险,一般只用于动态表名、列名这种场景

  1. sql的书写顺序是什么?执行顺序又是什么?

答案:SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT 执行顺序(数据库实际跑的顺序) :

  1. FROM:先找要查的表
  2. WHERE:过滤行数据
  3. GROUP BY:分组
  4. HAVING:过滤分组后的数据
  5. SELECT:提取需要的列
  6. ORDER BY:排序
  7. LIMIT:限制返回条数

记个口诀:先找表,再过滤,分组后再筛,选列再排序,最后限制条数

  1. char和varchar的区别

答案:

  • char:定长字符串,比如char(10),不管存啥,都占 10 个字符空间,存不满会补空格。优点是查询快,适合长度固定的场景,比如手机号、身份证号。
  • varchar:变长字符串,比如varchar(10),存多少占多少空间,还会额外存 1 - 2 个字节记录长度。优点是省空间,适合长度不固定的场景,比如姓名、地址
  1. 要你学一个新技术,你要多久?

答案:

  • 如果是同类型技术,比如我熟 MySQL,再学 PostgreSQL,或者熟 Spring Boot,再学 Quarkus,大概3 - 5 天就能上手做简单业务开发,一周左右能熟练对接项目需求。
  • 如果是跨领域新技术,比如我是后端开发,要学前端 React,或者学大数据 Spark,那得2 - 3 周:前 1 周啃核心概念和基础语法,中间 1 周做个小 demo 练手,最后 1 周结合项目场景落地