微信小程序面试题——面试整理4

一 面试题汇总

  1. 你在开发过程中有什么困难点(或者使用了什么技术)
  2. 会写接口吗? 项目你负责什么?
  3. 你之前做过小程序吗?主要包括哪些功能?
  4. 这个小程序的具体设计逻辑是怎么样的? 有几个人开发?周期多长?在你离职时, 这个小程序项目是否还在开发?或者你离 职时,你们公司在开发什么?
  5. 你说你负责支付环节,那么微信支付的 流程是否可以简单说一下?
  6. 那好,既然流程说完了,那么,我问你, 你这个项目涉及到了rmb,它在用户点击 支付之后的逻辑关系和表关系你是怎么 理解的? 有多少张表?表关系?
  7. 你觉得这个小程序项目的细节之处有哪些?
  8. 如何自定义tabbar?
  9. 可否说一下小程序页面之间的传值,如果是tabbar页面是否有问题?
  10. 我见你的celery用在了处理日志上,那除了处理 日志你还能想到什么用处吗?
  11. serializer的流程可以聊一下吗?
  12. 如果遇到redis进行了加密访问,你又该怎么操作?
  13. js闭包是啥?为什么使用js闭包?
  14. 你刚才提到了异步,在这个项目中你是否被异步坑 过,最后又是如何解决的?

二 面试题解答(仅供参考)

2.1 你在开发过程中有什么困难点(或者使用了什么技术)

1
2
3
在开发的过程中我没有太多的问题但是我的同事遇到了一个问题,怎么在序列化器中获取request的值。
通过源码的研究发现self.context["reqeust"].xx 可以获取到值
大大提高了数据的粘性和开发效率 在小程序端 使用模块的引用设置url值 方便url路径的更改

2.2 会写接口吗? 项目你负责什么?

1
小程序、api(主)

2.3 你之前做过小程序吗?主要包括哪些功能?

1
2
了解vue.js ,类似。
小程序就是前端技术:html、css、js

2.4 这个小程序的具体设计逻辑是怎么样的? 有几个人开发?周期多长?在你离职时, 这个小程序项目是否还在开发?或者你离 职时,你们公司在开发什么?

1
2
3
分为两大模块,有用户动态模块,拍卖模块,用户动态模块又分为发布功能,
动态展示功能以及常见的用户交互功能,拍卖模块又分为专场-拍品,
由后台管理人员维护更新,连我总共有3个人开发,总共开发了三个月,我离职时,项目还在开发,正在开发xx

2.5 你说你负责支付环节,那么微信支付的 流程是否可以简单说一下?

1
2
3
4
临时凭证 获取 wxid
生成repayid
json,返回给小程序,小程序调支付窗口。
支持成功提示 + POST回调。

2.6 那好,既然流程说完了,那么,我问你, 你这个项目涉及到了rmb,它在用户点击 支付之后的逻辑关系和表关系你是怎么 理解的? 有多少张表?表关系?

1
2
3
4
5
6
7
首先,在做这个功能的时候,会先在纸上画出来其中的逻辑,然后再把后端需要的值传过去。
做这个后端api时,需要拿到前端的数据,判断它是否使用优惠券了,是否使用保证金了,是否有地址了,
选择什么方式支付了,余额还是微信支付,还有该用户的支付价格,传到后端之后进行数据校验,
首先判断地址是否存在,然后判断订单是否合法,是否使用了优惠券,是否使用保证金,
用户的支付价格和后端计算的价格是否相符,由于支付环节必须保证一次完成,所以给它加了事务,
订单表的查询加了锁,通过一系列校验,然后进行支付。
支付成功之后,订单表记录,保证金抵扣记录,优惠券使用记录,退保证金记录,都需要进行相应的修改

2.7 你觉得这个小程序项目的细节之处有哪些?

1
2
3
4
闭包
drf,认证组件自定义。
drf序列化 嵌套
重复订单处理 & 数据库锁(InnoDB 行级锁)

2.8 如何自定义tabbar?

1
2
创建一个compent文件夹,里面创建一个tabbar页面,取消原有的tabbar页面。
需要在app.json中输入compent:ture,在自定义的pages页面中写入<tabbar selected="{{0}}"></tabbar>进行选中效果显示

2.9 可否说一下小程序页面之间的传值,如果是tabbar页面是否有问题?

1
2
3
4
5
6
7
8
var pages = getCurrentPages() 
var prevPage = pages[pages.length-2];
# prevPage是上一个页面的对象,下面可以设置页面的值
prevPage.setData({
topicText: topicInfo.title
});
也可以执行那个页面的函数,prevPage.getInfo(orderId);
tabbar页面没问题"

2.10 我见你的celery用在了处理日志上,那除了处理 日志你还能想到什么用处吗?

1
celery暂时只用在日志这方面,其他方面没有考虑过 拍卖业务关于订单的处理 & 状态的变化 celery和crontab的区别?

2.11 serializer的流程可以聊一下吗?

1
2
3
4
5
source
自定方法
自定义钩子:get / validate
嵌套
关于数据库FileField字段(COS)

2.12 如果遇到redis进行了加密访问,你又该怎么操作?

1
2
3
redis://:admin@192.168.88.88:8888,在ip地址前面加上:admin@ 
- 传参 Connect(host='..',port....)
- 字符串 connect_by_url('redis://密码@192.168.88.88:8888/,')

2.13 js闭包是啥?为什么使用js闭包?

1
2
3
4
5
6
7
8
9
10
11
var dataList = ['alex','lld','uuid'] 
for(var i in dataList){
(function(data){
wx.request({
url:'xxx',
success:(res) => {
console.log(data);
}
})
})(dataList[i])
}

因为微信小程序处理函数是异步执行的,异步执行造成的结果可能和预期的不合,如果函数中有循环,最后的结果都一样,所以使用js闭包可以解决这个问题。

2.14 你刚才提到了异步,在这个项目中你是否被异步坑 过,最后又是如何解决的?

1
2
3
算是坑过吧,我在做发布功能时,需要将用户选中的图片和其他信息发送上去,
图片发送到桶中,其他信息需要放到数据库中,而其他信息需要包含图片的路径地址,
这个路径地址需要上传到桶中返回,而异步执行会造成图片上传和其他信息发送时间不一致,造成的结果是图片路径不能保存到数据库中。

三 考

  • 知乎—小程序面试题全面解析-B类问题-业务