面试笔记

  • A+
所属分类:学习分享

前言

很不幸2019考研的成绩不理想,我开始找工作。我是18年本科毕业,所以我现在不是应届生了,并且我还没有工作经验,所以我觉着自己处境比较尴尬。相比这些更尴尬的是,我的确有一段时间没有写代码了,很多知识比较模糊了,我想我应该乘着这段时间好好整理下。

 

正文

一、后端开发

(一)、Java方面

1、前后端分离

前两天面试一家公司问到我做的项目是否是前后端分离,这么简单的问题,我当时竟然在乱答。在校期间最开始写的代码的确是Jsp中会嵌套Java代码,包括引入JSTl标签库什么的,但是后面做的项目再SpringMVC中使用的REST风格!!这不就是前后端分离嘛!这也是个教训,首先说明自己对知识没有吃透,其次面试经验也很不足。

下面回忆总结下当初怎么写的:

REST 是面向资源的,rest的一种思想就是用http中的动作get,post,put,delete,来进行增删改查。GET 用来获取资源, POST 用来新建资源(也可以用于更新资源), PUT 用来更新资源, DELETE 用来删除资源

(1)在web.xml中配置好HiddenHttpMethodFilter

(因为浏览器只支持Post和get的方式,想要实现delete和put的方式,需要使用过滤器HiddenHttpMethodFilter,将页面普通的post请求转为指定的delete或者put请求)

(2)在后端控制器使用RequestMapping来指定访问方法

如:@RequestMapping(value = "/rest/{id}",method = RequestMethod.DELETE)

(3)引入JSON返回请求,在Maven中加入相应jar包

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.8.8</version>

</dependency>

(4)在控制器使用@ResponseBody将java对象转为json格式的数据

 

通过这次复习我不仅更加清晰了这种风格的好处,还进一步了解了Restful。

在Restful之前的操作:

http://127.0.0.1/user/query/1 GET  根据用户id查询用户数据

http://127.0.0.1/user/save POST 新增用户

http://127.0.0.1/user/update POST 修改用户信息

http://127.0.0.1/user/delete GET/POST 删除用户信息

RESTful用法:

http://127.0.0.1/user/1 GET  根据用户id查询用户数据

http://127.0.0.1/user  POST 新增用户

http://127.0.0.1/user  PUT 修改用户信息

http://127.0.0.1/user  DELETE 删除用户信息

之前的操作是没有问题的,大神认为是有问题的,有什么问题呢?你每次请求的接口或者地址,都在做描述,例如查询的时候用了query,新增的时候用了save,其实完全没有这个必要,我使用了get请求,就是查询.使用post请求,就是新增的请求,我的意图很明显,完全没有必要做描述,这就是为什么有了restful.

参考文章:

https://blog.csdn.net/qq_21383435/article/details/80032375

https://blog.csdn.net/weixin_41829196/article/details/79641911

2、Java数据类型

基础数据类型:

8位:Byte(字节型) 16位:short(短整型) char(字符型) 32位:int(整型)、float(单精度型/浮点型) 64位:long(长整型) 、double(双精度型)

boolean(布尔类型)

(二)Mybatis

1、resultMap和resltType的区别?

2、Mybatis的DAO层接口是否可以重载?

不可以,因为xml中的id具有唯一性,如果重载必定会造成id重复。

参考:https://blog.csdn.net/feiye_wine/article/details/47173005

3、MyBatis 中#与$的区别

#{}:占位符号,好处防止sql注入

${}:sql拼接符号

二、数据库方面

(一)SQL方面的问题

(二)MySQL方面的问题

1、mysql int(3)与int(11)的区别

3和11并不是存储长度的区别,而是存储时在所存数据前面补齐多少个0

参考: https://blog.csdn.net/wepe12/article/details/53705967

 

2、char和varchar的区别

char是存储字符(无论字母还是汉字都最多存255个), char(20)表示这个字段最多存20个字符 ,如果存了16个字符    那么也会占用20个字符的空间。

varchar是存储字节(1个字母1个字节1个汉字3个字节)varchar(50)表示这个字段最多存50个字节的内容,如果只存了16个字节,那么只占用16个字节的空间 。

 

3、MySQL性能优化

 

4、UNIQUE唯一性约束,null值可以重复

 

5、having子句的用法

 

6、行转列(列转行)的查询

(三)Oracle方面的问题

1、如何分页?

 

2、如果存储大数据?

 

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: