今天面试的人比较多,大概有40多人,各种岗位的都有,需求分析、java开发、python开发、HR人事
我面试的是华宇研发部,技术含量要求比其他要高
面试官念到我名字,去了大概8间面试小隔间,发现人都满的呢,就在这个大厅里开始了面试,我旁边还有一个面试的
1、面试官仔细看了我的笔试题,觉得还不错,看到SQL编写说,你用了多表联查,可以可以。。。emmmm看来好多人都直接按单表查的,哈哈哈。随后面试官说,你做的不错,就拿起了简历
2、我看你做了一个学校微信点餐服务,怎么样?能运行吗?上线了吗?用什么做的?
是去年12月份开始做的,一共用了3个月,由于是给学校食堂开发的,需要学校领导审核才能通过,目前老师在积极争取。
这个项目前端是基于微信小程序的,用户直接使用微信小程序注册并使用,而后端是用PC端的,订单信息直接回发布在卖家的电脑上,项目是用Spring boot集成了Spring+Spring MVC+Spring data jpa部分持久层用了Mybatis做了级联和动态SQL查询,前端是使用Bootstrap+少部分Vue,前端引擎为thymeleaf。
3、这个项目里有什么难点吗?你是怎么解决的?
由于是基于微信完成订单的支付,就需要调用很多微信支付接口,我在开发的时间,花了很多很多很多时间来看微信开发者文档,而且必须仔细阅读,不能由差错,否则就会出现错误。有些重要的接口我用了第三方SDK,这个SDK写的很好,不会出现差错,而且大部分都做了MD5的数据加密
4、你在简历里说到自己喜欢看Spring源码,那你对IOC有什么理解?
5、你对Spring MVC了解多少?你在做项目的时候用了哪些注解?
首先每个Controller都需要有一个URL的配置
比如URL路径映射:@RequestMapping("/hello"),可以将多个url映射到同一个方法上。
我们需要将这个类作为Bean放入IOC容器
就需要@Controller或者@RestController
这两个区别在@RestController注解相当于@ResponseBody + @Controller合在一起的作用,这样我们返回的数据就会变成JSON格式,会很大方便和前端的数据对接
我们在传数据的时候会用到
@PathVariable
用于将请求URL中的模板变量映射到功能处理方法的参数上
@requestParam
控制层获取参数,类似一种是request.getParameter("name")
@ResponseBody
该注解用于将Controller的方法返回的对象,一般用于返回json的数据
在bean的注入时使用
@Resource和@Autowired
这两个注解的差距在于@Autowired在注入是按类型而且是Spring中的注解,而@Resource是按名字配置,是java中自带的注解,我推荐用@Resource,这样就有了解耦的效果,但是现在IDEA中我们都推荐用构造方法的方式注入。
6、我看到你用Redis了?你怎么用的?
项目中我们想象了一样的一个场景,假设商家在食堂有一个活动,有1000个西瓜,大家通过秒杀来抢,这时候就发生了高并发,为了保证线程安全,我们做了一个基于Redis的分布式锁,主要用到了SETNX和GETSET这两个命令,从而不使用synchronized关键字,既保证了安全又保证了速度,和响应时间。
而且在大部分数据的查询都使用了Redis的缓存机制,保证了数据的在高并发时间的交换,主要是Redis的命中,失效,和更新问题。
7、你对前端了解多少?
我大一时,主要学习前端,从HTML、CSS、JavaScript学起,然后看来JQuery和部分Vue
8、你会Vue吗?有没有工程化的开发过Vue?
我会Vue不是很了解,没有开发过
9、你来我这里,我可能会让你60%的前端开发,40%的后端开发,现在是大前端的时代,你应该会一点前端的技术,我觉得你很可以。
10、说说java的反射吧?
Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。
11、java的三大特性?抽象是什么?
我的理解是吧一个事物抽象化,让我们在数据中描述他的行为和属性,就像一个实体类,我们又它的ID和name及一些属性。还有就是我们对具有大概相同的一类事物的共同特点,做出的描述
12、Bean的作用域有那些?
-
singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
-
prototype : 每次请求都会创建一个新的 bean 实例。
-
request : 每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。
-
session : 每一次HTTP请求都会产生一个新的 bean,该bean仅在当前 HTTP session 内有效。
-
global-session: 全局session作用域,仅仅在基于portlet的web应用中才有意义,Spring5已经没有了。Portlet是能够生成语义代码(例如:HTML)片段的小型Java Web插件。它们基于portlet容器,可以像servlet一样处理HTTP请求。但是,与 servlet 不同,每个 portlet 都有不同的会话
12、你在这里等等
我还以为要干什么,不曾想二面马上就要开始