最近在整理我在大厂面试以及平时工作中遇到的问题,记录在 shfshanyue/Daily-Question[1] 中,但觉得对于时时回顾,常常复习仍然做的不够。

于是在微信公众号中开发了随机生成模拟面试的功能,由于觉得比较简单且有趣,于是分享了出来

需求

先来谈一谈需求点:

  1. 在公众号中回复面试,随机生成 N 道大厂面试题
  2. 每道面试题指向一个超链接,可以查看答案

需求很简单,如图下所示。你也可以去我的公众号 全栈成长之路 查看实现效果


内容

在大部分行业中,内容是至为重要的,有内容才会有好的服务,而技术只是整合内容的一种手段。

在本次功能开发中也是如此:一个面试题库才是至关重要

为此,我在 github 上新建了一个仓库,使用 Issue 来记录我在大厂面试中所遇到的面试题及答案

每天一道面试题,有关前端,后端,devops 以及软技能,促进职业成长,敲开大厂之门。[2]

到此一步,我拥有了自己的内容,并且拥有了开箱即用的后台管理系统: github issues

数据

此时我们已经拥有了一个特殊的后台管理系统,但很遗憾,由于该管理系统的特殊性,我们并不是数据映射管理系统,而需要根据 Github Issues 来生成结构化的数据,好在我们可以使用 Github API。

Github API 现在已经全部变成了 GraphQL 接口,看来大家又需要学习一门新的技术了。关于 Github API 的文档可以在这里找到: Github API Explorer[3]

以下 Query 就是我们所需要的数据

query ISSUES ($after: String) {  repository (name: "Daily-Question", owner: "shfshanyue") {    id    issues (first: 100, after: $after, states: OPEN) {      pageInfo {        hasNextPage        endCursor      }      nodes {        id        number        title        body        comments (first: 10) {          nodes {            id            body            star: reactions (content: THUMBS_UP) {              totalCount            }            author {              login              url            }          }        }        labels (first: 5) {          nodes {            id            name          }        }      }    }  }}

微信开发

在微信开发中,定义一条路由,用来处理对关键字 面试 的回复

const routes = [{default: true,handle: handleDefault}, {text: /面试/,handle: handleInterview,}]

根据封装好的 Issue SDK 随机选取八个问题,更多代码可以前往 shfshanyue/wechat[4]

function handleInterview () {return issue.randomIssues(8).map((issue, i) =>`${issue.number}">${i+1}. ${issue.title.slice(6)}`  ).join('\n\n')}

自此微信开发结束,开始部署项目

部署

开发完成之后使用 dockerdocker-compose 部署,traefik 做服务发现及负载均衡。

如果你对它们不够了解,可以查看我的系列文【个人服务器运维指南】(点击公众号菜单)的案例篇,关于 dockercomposetraefik 等基础设施的搭建均在本系列中有所介绍。

在生产环境中,通过 https://we.shanyue.tech 暴露服务。

在测试环境中,需要监听文件重启。在测试环境通过挂载目录的方式在 https://we.dev.shanyue.tech 暴露服务。

Dockerfile 较为简单,配置文件如下

FROM node:10-alpine

WORKDIR /code

ADD package.json /codeRUN npm install --production

ADD . /code

CMD npm start

docker-compose.yaml 配置文件如下

version: '3'

services:  wechat:    build: .    restart: always    labels:      - traefik.http.routers.wechat.rule=Host(`we.shanyue.tech`)      - traefik.http.routers.wechat.tls=true      - traefik.http.routers.wechat.tls.certresolver=le    expose:      - 3000

networks:  default:    external:      name: traefik_default

测试环境与生产环境

当我们需要测试微信公众号时,直接使用自己的公众号不太合适,特别是当已有上线内容时。微信官方提供了测试公众号,我们可以重新填写 域名 以及 token。在测试环境使用域名 https://we.dev.shanyue.tech

我们在 docker-compose 中使用 service 中的 wechat 代表生产环境,wechat-dev 代表测试环境

wechat-dev 通过文件挂载提供服务,可以更新重启应用,便可以做到实时更新代码,并实时在测试公众号中看到效果。

docker-compose.yaml 配置文件如下

version: '3'

services:  wechat:    build: .    restart: always    labels:      - traefik.http.routers.wechat.rule=Host(`we.shanyue.tech`)      - traefik.http.routers.wechat.tls=true      - traefik.http.routers.wechat.tls.certresolver=le    expose:      - 3000

  wechat-dev:    image: 'node:10-alpine'    restart: always    volumes:      - .:/code    working_dir: /code    command: npm run dev    labels:      - traefik.http.routers.wechat-dev.rule=Host(`we.dev.shanyue.tech`)      - traefik.http.routers.wechat-dev.tls=true      - traefik.http.routers.wechat-dev.tls.certresolver=le    expose:      - 3000

networks:  default:    external:      name: traefik_default

关于后端代码,托管在 shfshanyue/wechat[5]

我是山月,可以加我微信 shanyue94 与我交流,备注交流。另外可以关注我的公众号【全栈成长之路】

如果你对全栈面试,前端工程化,graphql,devops,个人服务器运维以及微服务感兴趣的话,可以关注我

参考资料

[1]

shfshanyue/Daily-Question: https://github.com/shfshanyue/Daily-Question

[2]

每天一道面试题,有关前端,后端,devops以及软技能,促进职业成长,敲开大厂之门。: https://github.com/shfshanyue/Daily-Question

[3]

Github API Explorer: https://developer.github.com/v4/explorer/

[4]

shfshanyue/wechat: https://github.com/shfshanyue/wechat

[5]

shfshanyue/wechat: https://github.com/shfshanyue/wechat

使用代理爬去微信公众号_使用微信公众号开发模拟面试功能相关推荐

  1. java微信公众号面试题_使用微信公众号开发模拟面试功能

    最近在整理我在大厂面试以及平时工作中遇到的问题,记录在 shfshanyue/Daily-Question 中,但觉得对于时时回顾,常常复习仍然做的不够. 于是在微信公众号中开发了随机生成模拟面试的功 ...

  2. 使用代理爬去微信公众号_Python3网络爬虫开发实战之使用代理爬取微信公众号文章...

    本节目标 我们的主要目标是利用代理爬取微信公众号的文章,提取正文.发表日期.公众号等内容,爬取来源是搜狗微信,其链接为 http://weixin.sogou.com/,然后把爬取结果保存到 MySQ ...

  3. 使用代理爬去微信公众号_Python3WebSpider/9.5-使用代理爬取微信公众号文章.md at master · Lainton/Python3WebSpider · GitHub...

    9.5 使用代理爬取微信公众号文章 前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章. 1. 本节目标 我们的主要目标是利用代理爬取微信公众号 ...

  4. java配置微信网页授权_玩玩微信公众号Java版之六:微信网页授权

    配置好了,就可以进行开发了,首先来看一下具体的流程: 其实很多功能点,前面已经实现过,只用改一下调用地址和参数即可. 首先,调用的定义链接:https://open.weixin.qq.com/con ...

  5. python图灵机器人微信号_个人微信接入图灵机器人(基于Python)

    开发环境:Ubuntu14.04 编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号,创建机器人,如果只是学习的话,可以使用免费版,一个账号 ...

  6. 微信好友只有昵称没有微信号_为什么微信好友的个人资料有的显示微信号,而有的只有个昵称?...

    对方用手机号码注册微信,或者绑定了手机号码,而你又恰巧在手机里存了他的手机号码,这种情况微信就会显示他的手机号码.你没有存他的手机号码就不显示,可以防止信息泄露. 你一定用手机号码绑定了微信,并且把通 ...

  7. python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    原标题:干货 | 微信小程序自动化测试最佳实践(附 Python 源码) 本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善, ...

  8. Spring Boot+微信小程序_保存微信登录者的个人信息

    1. 前言 微信小程序开发平台,提供有一类 API,可以让开发者获取到微信登录用户的个人数据.这类 API 统称为开放接口. Tip:微信小程序开发平台,会把微信登录用户的个人信息分为明文数据和敏感数 ...

  9. 忘了微信密码怎么办_忘记微信密码了怎么办,一招帮你快速找回密码

    微信的使用几乎成为了一种生活不可或缺的生活方式.如果我们在不经意间忘记了这个微信登陆密码该怎么办?如何找回呢? 根据微信注册的方式,找回帐号大致分为以下三类: 第一种,以QQ号注册的微信帐号 如果你的 ...

最新文章

  1. 1054 The Dominant Color (20 分)【难度: 简单 / 知识点: 思维】
  2. Django的中间件
  3. 博客园首页新随笔联系管理订阅 Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
  4. 如何给基于 SAP Cloud SDK 的应用增添缓存支持 Cache support
  5. html实现拖拽排序,简单的jquery拖拽排序效果实现代码
  6. android o 结构光流程,惊艳亮相!一分钟看懂OPPO Find X 3D结构光技术是什么鬼,太牛了...
  7. 卓越领导者的智慧(精华版)
  8. 力扣-169 多数元素
  9. java element string_Java StackTraceElement toString()方法
  10. NodeJS Stream 五:双工流
  11. doubango TURN Data Indication报文代码
  12. tkinter 菜单添加事件_简洁又好用的导航网站添加了自定义导航功能
  13. Ruby快速入门(30分钟)
  14. 图解hadoop原理
  15. 一个简化的正弦余弦算法:正弦算法
  16. html制作钢铁侠心脏,心脏术后我变成了“钢铁侠”
  17. 客户成功故事 | 深圳赛意法:数据分析,为企业可持续发展注入源动力
  18. HTTP状态信息和描述
  19. 一行代码让Python的运行速度提高100倍
  20. java毕业设计星之语明星周边产品销售网站Mybatis+系统+数据库+调试部署

热门文章

  1. linux 系统迁移到固态硬盘,在Linux系统中将SSD当块设备缓存的方法
  2. Debezium的MySQL连接器的工作原理
  3. 新一代国产区块链底层平台正式亮相,蓝石区块链实验室首发CefaChain技术 | 附白皮书
  4. PostgreSQL全局替换字符串函数
  5. 无人机航测三维实景建模的价值
  6. 赛迪视点 | 新冠疫情下的中国集成电路产业发展
  7. 【TIPC】三、Messaging
  8. 运用程序化交易系统的能力表现在哪些方面?
  9. 通过按位与和按位或操作
  10. 深度学习网络各种激活函数 Sigmoid、Tanh、ReLU、Leaky_ReLU、SiLU、Mish