微派后端一面凉凉
前几天在Boss直聘投了微派公司(贪吃蛇大作战那个公司)的后端工程师岗位,技术栈写的PHP/Golang,但是也给我安排了面试,虽然我主要用Java。
今天上午安排了面试,大概40分钟,感觉凉的很彻底。
项目
1、看你项目中有一个家乡分享的小程序,大概讲一下。
后台SpringBoot,管理端Thymeleaf+用户端小程序
2、你在项目负责哪些部分?
微信授权/图片上传/主页展示
3、微信授权的流程?
wx.getUserInfo获取用户基本信息,wx.login获取code发到后台+appid+secret换取openId,操作数据库自动帮助用户注册。
4、图片上传怎么实现的?
实话实话,copy的代码,原理没仔细研究
5、微信小程序是否考虑了token问题?授权登录后如何验证用户身份?
没考虑,从这个地方应该就开始凉了。
网络
6、TCP三次握手流程,序列号如何变化?
7、HTTP协议理解,如何弥补无状态的不足?cookie和session如何配合?session如何存储?
8、TCP/UDP区别,TCP如何确保连接安全有效,HTTP和TCP关系
第二个问题想到了ARQ的两种实现,停止等待和连续ARQ,其他的拥塞控制啥的只答了个名字。
9、HTTP/HTTPS区别,TLS基本原理(对称非对称加密),GET/POST请求区别
MySQL/Redis
10、MySQL索引实现底层原理(B树的改进B+树优缺点),Hash索引原理(不会,扯了个数组加链表),四种事务隔离等级,以及脏读/不可重复读/幻读的解决情况
11、MySQL字符集utf-8和utf-8mb4区别(字段长度区别,没答上来)
12、手写SQL语句,数据表score_info(uid,course,score),查询所有科目都在90分以上的uid,将平均分降序排列并找出排在3-5位的uid
SQL这块没复习到,直接跳过了
13、redis用过哪些基本操作,项目中用过吗
学的时候稍微了解过一点,这次也没复习到,跳过
数据结构
14、数组实现队列,假溢出问题解决(循环队列)
15、HashMap底层实现原理,Map如何保证插入有序(使用TreeMap或者传入自定义Comparator)
16、5个数列从小到大排列好,每个数列不存在重复元素,找出他们的交集
暴力循环/每两个数列比较/使用List的retainsAll方法求交集,没想到其他更好的办法,是我太菜了..没写代码,只是口述了一下思路
其他
17、Postman测试接口时如何处理权限认证问题(不会,以后学)
很奇怪,这次java基础/并发/jvm/设计模式一点都没有问,也可能和他们技术栈有关,不过问到的东西有些还是答不上来,SQL语句这一块漏了,HTTP/TCP需要继续深入学习,算法功力有待加强,还有就是做的项目经不起推敲,小程序安全认证问题完全没有考虑,面试官还说我基础比较扎实,估计是怕说实话伤我心哈哈....文章最后用一张图结束把。