首页 > 微店 Java暑期实习一面凉经(20min)
头像
帅哥学java
编辑于 2021-06-04 10:25
+ 关注

微店 Java暑期实习一面凉经(20min)

1.自我介绍
2.项目介绍(当时并没有准备项目,上去随便说了说需求分析、vue+springboot+docker+fastdfs+nginx实现的、mysql、redis都是云部署,说了说功能啥的巴拉巴拉....)
3.项目狂怼15分钟(介绍一下你熟悉的项目,说一下难点和你收获最大的地方?)
答:我说项目中点赞功能和评论功能收获最大,尤其是点赞功能的逻辑虽然简单,但很实用。
1)项目中你点赞功能能具体说一下怎么实现的吗?
答:我是用set实现的,我回答了我的思路,我是文章id作为key,文章id:用户id作为value去存的,如果存在相同的key则说明是对同一篇文章点赞,直接add到reids缓存中,前端每次点击不同的文章进行点赞就会传来不同的文章id,如果是不同用户对同一文章点赞,则直接按我上面说的,文章id相同,直接加入缓存即可,最后前端展示的点赞数是通过StringRedisTemplate.opsForSet().size(文章id作为key)实时统计的,点赞变红和变灰是通过后台遍历所有文章,看当前登录用户的id(key)和每篇文章的id与其用户id(value)是否存在,如果存在就返回一个标志位flag为true,否则返回一个false,前端去做红灰的展示。每次读写数据都在缓存中,然后做了个定时任务,每天凌晨一点更新一下数据库。
2)那既然你是用的redis的set做的,那文章id相同,value不会覆盖吗?
答:当时我答的不好,犹豫了,应该更自信点,redis的set是key不能重复,但是同一个key是可以拥有多个value值的,像sadd k1 1;sadd k1 2;smembers k1就是有两个value值,分别为1和2.(当时他还说用hash结构是不是更好点,我当时做点赞功能点看过网上博客,都是hash做的,但是我这个也行)。
3)定时任务是怎么做的?
答:我说的是springboot整合定时任务,用@Scheduled注解然后里面有一个时间得表达式,然后在springboot主配置类里开启定时任务@EnableScheduling,就可以每次更新缓存到数据库了。
4)项目中的拦截器用来干什么的?
答:我当时都没准备,我就说拦截器主要用来解决跨域,还有判断一下token是否过期和有没有token。
5)拦截器是通过什么实现的?
答:当时没回答上来,给自己挖坑挖到了过滤器。
6)接着问我过滤器和拦截器的区别?(当时心态崩了哈哈)
答:这边我瞎胡说了几句,反正答的不好。
项目到这里就问完了
4.数据库的ACID?(八股文,答的很顺利)
5.问我持久性怎么实现的?(我没准备这些ACID的实现原理,我当时记得有个啥日志,就说日志做的,不是很了解)
6.然后面试官说那我问一个开放题,如果是你,怎么来设计这个持久性?(当时也是答的支支吾吾,反正就是不行)
7.然后又问get与post区别(这个我也没准备,但是我大概的还是知道的,说了get是地址栏获取数据,容易暴露信息,post数据放在request body里更安全,post一般用于增删改,get用于查询),但这并不是面试官所想听到的。
8.我想听get与post从HTTP协议方面的区别?(当时又卡壳,下来我才百度知道,比如说post请求会产生两个TCP数据包,get请求会产生一个TCP数据包,具体大家可以百度,这里不过多说明)
9.又问回项目了,问我项目中有用到多线程的例子嘛?(没用到,不会,我知道多线程的那些八股文,但项目中并没有用过,只写过demo)
10.后端在执行逻辑的时候,是怎么管理这个应用里面的线程的?(不了解,没有用到,更别提管理了,我知道线程池可以放线程,有大佬知道的话可以评论留言让我学习学习)
问题就问这么多,你有什么想问我的吗?(当时心想肯定凉了,就问了问技术栈和部门是干啥的,面试官还让我自信点,不会直接说不了解就行,还是菜了,如果会那肯定就自信,还得继续努力啊!)
大三本学期第一次面试,项目都没准备就面去了,上去没答好,有些原理也没看,这次对我来说是个动力,我下次肯定会变强再来!Hey Bro Come On!

更多模拟面试

全部评论

(10) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

近期精华帖

热门推荐