面试知识2

面试题

一、 Vue部分

1、 对于MVVM的理解
Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。
View代表UI组件,他负责将数据模型转换为UI显现出来。
ViewModel监听模型数据改变和控制视图行为、处理用户交互,简单理解就是一个同步View和Model的对象,连接Model和View。

2、Vue几种常用的指令
v-for 循环
v-if 判断
v-bind 为标签绑定值
v-on 注册事件
v-show 格局表达式之真假值,切换元素display CSS属性(相当于是当这个值为真时,则显示在页面,否则不显示)
v-else 当v-if表达式不成立时,v-else执行,与v-if结合使用

3、什么是组件
组件是对特定功能代码(html,css,js)的封装,通过组件的名字可以重复利用该组件中的代码。
组件分为全局组件和局部组件
全局组件:在所有vue实例中有效
局部组件:在自己vue实例中有效

4、vue的生命周期
创建->初始化数据->编译模板->挂载Dom->渲染->销毁
Vue的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑。

5、什么是路由
路由是负责将进入浏览器请求映射到特定的组件代码中。即决定了由谁去响应客户端请求。简单说路由就是url地址和对应的的资源映射

二、 前后端分离

1、前后端分离的理解

前后端分离不只是一种web应用开发模式,只要在web应用的开发期进行了前后端开发工作的分工就是前后端分离。这个只能叫前后端分工。
其实前后端分离不止是开发魔兽,二十web应用的一种架构模式。在开发阶段,前后端工程师约定好数据交互接口,实现并行架构,开发和测试;在运行阶段前后端分离模式需要对web应用进行分别部署,前后端之间使用HTTP或其他协议进行交互请求。

2、前端怎么独立开发

Element是一套为开发者、设计师和产品经理准备的基于Vue2.0的桌面端组件库,提供了很多ui组件。

3、swagger是什么

swagger是接口规范。接口测试人员和前端开发人员要通过接口描述测试接口,所以需要定义一个接口规范

4、交互方式

在前后端分离架构中,后端只需要负责按照约定的数据格式像前端提供可调用的API服务即可。前后端之间通过HTTP请求进行交互,前端获取到数据后,进行页面的组装和渲染,页面跳转,最终返回给浏览器。

5、后端如何进行接口测试

采用了postman工具。postman是一个http协议接口测试工具,可以用来发送各种http请求,用来测试http协议接口

三、Redis

1、为什么使用redis

Redis是一个使用C语言开发的key-value形式的高速缓存nosql数据库。他先存到内存中,然后会根据一定的策略持久化到磁盘,即使断电也不会丢失数据。还有他支持的数据类型较多。

2、Redis的持久化机制

redis的持久化分为两种方式:
RDB(Redis Database):指定的时间间隔能对你的数据进行快照存储。
AOF(Append Only File):每一个收到的命令都通过write函数追加到文件中

3、redis支持的数据类型

string、list、hash(字典)、set、zset(有序集合)

四、注册

1、注册是怎么做到的

注册包括手机注册和邮箱注册
大致流程:

  1. 用户在页面输入手机号/邮箱之后,点击获取验证码。
  2. 后台生成验证码,并将验证码存入redis。
  3. 然后调用发送短信/邮件的接口,将验证码发送到收件/邮箱
  4. 用户收到验证码,输入页面,点击注册。后端注册接口要比较用户输入的验证码与redis中存入的验证码比较。一致则继续下一步,失败重新输入。

2、密码是怎么处理的

采用md5加密存入数据库

五、登录

1、用户和管理员登陆是如何分开写的
用户和管理员登陆是同一个接口,通过前端床过来的type判断是用户还是管理员,然后跳转不同界面。

2、登陆这块的表设计是怎样的

用户是一张表,管理员是一张表,然后我们还做了一个登陆表,登录表里面是所有用户和管理员的登录账号和密码,因为管理员也可以登录我们的网站享受服务,所以可能一个手机或邮箱既是用户又是管理员。为了区分这种登陆账号到底是要登录到后台还是网站,所以我们在登陆表里面有一个type字段,区分该账号使用户还是管理员。

3、怎么判断用户是否登录

登陆成功,用uuid生成一个随机数,将该随机数作为key,用户信息作为value存入redis,然后传到前端,前提取名为token会将他放到localStorage里面,并且我们在每次发情请求到后台时,都会在请求头中放入该token,在后台拦截器中,我们会获取每一个请求的token,如果没有或则通过该token在redis中没有获取到相应的用户信息,我们都认为他没有登陆,然后返回前台登录界面,否则放行。

4、前端发起的所有请求都会被拦截吗

除了登录和注册接口,其他的都会被拦截

5、是如何让所有的请求都携带token的

通过axios前置拦截器,在所有请求发起前,判断token是否存在,如果存在就在请求的header中加入token

六、其他业务

1、寻主是什么意思

用户会因为各种原因不想继续抚养自己的宠物,通过系统的寻主功能发布通告
流程:

  1. 用户发布寻主信息
  2. 平台接收信息
  3. 找到最近的门店,发送短信给店铺管理员,并且将这个消息划归给他们店铺
  4. 收取宠物,如果要收钱,还要创建订单并完成支付

2、是在怎么找到最近的合作门店的

我们集成了百度地图接口,因为寻找主功能需要推算离用户最近的线下门店,系统需要将用户的输入的地址解析为经纬度。再经过经纬度计算那家店铺里用户地址最近。

3、订单表设计是怎样的

订单包括:商品订单、服务订单、充值订单,因为业务不同,所以这三种订单是分表存放的。另外还有一个用户地址表,因为i用户的地址可能不止一个,所以我们有一个专门的地址表存放用户的地址,另外还有一个订单地址表,关联某订单是哪一个地址。

4、支付是怎么做的

我们使用的是支付宝的接口。大平台一般都是先把钱达到平台,用户确认后,平台划账给店铺,用户长时间不不确认,平台自动确认。我们小平台的钱是直接到商家的,我们美与支付牌照

5、订单超时未支付会取消吗?是怎么做的

我们订单超过15分钟未支付就会取消,是通过quatrz定时器来实现的

七、docker

1、什么是docker

Docker是一个开源的应用容器引擎,让开发者可以打包它们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或windows机器上,也可以实现虚拟化

2、容器与虚拟机的比较

(1)本质上的区别-共享操作系统,不需要安装额外操作系统
(2)使用上区别,现在市面上主流使用的都是容器,很少看见有使用虚拟机的了

3、docker特点(为什么用docker)

(1)上手快
用户可以很快把自己的程序“Docker”化,可以随心所欲的修改自己的代码,并且大多数docker容器只需要不到一秒钟就可以启动,去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中可以运行更多的容器,使用户尽可能的充分利用系统资源

(2)职责的逻辑分类
使用docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器。Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境一致性。

(3)快速高效的开发生命周期
Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。

(4)鼓励使用面向服务的架构
Docker还鼓励面向服务的体系结构和微服务架构。Docker推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用型程序模型,在这种模型下,应用程序或者服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,拓展或调试应用程序都变得非常简单,同时也提高了程序的内省性。

4、docker组件

(1)Docker客户端和服务器
(2)Docker镜像
(3)Registry(注册中心)
(4)docker容器

5、什么docker镜像
Docker镜像是由文件系统叠加而成(是一种文件存储形式)。最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统(引导文件是特殊的系统文件,也就是担负着引导操作系统启动的文件。)。Docker用户几乎永远不会和引导系统有什么交互。实际上,当一个容器启动后,他将会被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存供磁盘镜像使用。Docker容器启动是需要的一些文件,而这些文件就可以称为Docker镜像。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值