我不是一个兴趣使然的 PHPer,也不是能云淡风轻的看待这次去百度的面试,只是想看标题轻松一点。
今天这场百度的面试,PHP 后端开发,是在 BOSS 直聘上约的,对方的 Title 是百度高级研发工程师,百度地图相关部门,聊了不多的内容就达成了面试意向。
可能和一些人会经历的不同,约我的人就是技术,面试直接聊项目经验和技术,没有做题。
这也是我整个北京计划的第一场面试,也是很有意义的一场,一个转折,就也想写一篇面经。
主要记录面试提问流,我答的不好就不写详细了,对有些口语化的内容,做了一些归纳。
一. 面试内容览概
问:[看简历] 14年毕业,说一下期间的工作经历吧。
14年毕业xxx,16年底转行,第一家公司xxx,上一家公司,在公司里做了…
问:就上家公司的工作详细说一下,你都负责哪些内容。
作为主程,负责整体架构,从0到1的技术实现…参与新项目的立项与论证…
问:就做过的一个项目详细说一下,架构方案、有哪些功能模块、一些功能实现。
就拿上家公司,做的这个「嗨阅读 App」API 接口说吧,整体是 LNMP 架构…
问:就你提到这个项目,说一下客户请求到服务响应过程,你可以在纸上画一下流程图。
[鬼画符很潦草],我还是口头说吧,客服发起请求,连接 Nginx 服务器,进到 Web 服务…
问:项目用到了 Nginx,Nginx 不能直接运行 PHP 代码,说一下这个实现过程。
emm,就是常规使用,没有详细了解过…
问:[接上一个问题] 这个环境是你搭的吗,你知道 PHP-FPM 吗?
原有项目架构,知道但不不很清楚…
问:你提到项目中用到了 MySQL 和 Redis,它们是如何使用的。
MySQL 做常规数据持久化;Redis 一方面做缓存层,另一方面保存一些总要变化但不重要的数据,比如点赞和签到…
问:说一下你这个 Redis 点赞功能是如何实现的,你可以在纸上写一下如何设计。
[鬼画符伪代码] 先查出来用户是否点赞,没有点赞就这样,有点赞就那样…
问:这个点赞功能你有没有想过,由于一些情况,用户2个请求同时达到服务器,会发生什么情况。
[说实话没细想过,都是依据一些现成方案做些调整] emm,可能会?…
问:列举出一个用户点赞2次,请求同时到达服务器会出现几种情况。
[可能和数据库脏读类似] 第一次点赞没有完成,第二次请求到来,获取到的是没有点赞结果…
问:[幂等性] 换个类似的问题,用户余额提现,调用三方支付提现到银行卡,多个相同请求同时达到服务器,如何保证支付安全。
前端做防抖动,后端短时间发起的第二次请求,如果订单没有走完,不生成新的订单,用唯一订单号…数据库事物…
问:如果在这个过程中三方支付一直没有回调结果返回怎么办?
emm, 就不完成订单?…
问:说说对 Linux 都熟悉到什么程度。
日常用做过主力机,日常命令和运维命令…内核不太了解…
问:熟悉 Linux 的文件结构吗。
目录树?再多就…
问:[接上一个问题] 如果有磁盘上储存 10 亿个 10k 的小文件,磁盘没满却发现无法继续储存了,为什么?
[inode] emm, 这个不太清楚…
问:说说 HTTP 有什么问题。
HTTP 传输内容是明文的,可能会有中间人攻击,拿到用户隐私数据…
问:说说 HTTP 不安全,中间人是如何劫持的。
emm…通过路由器、网关这些网络设备拿到数据包…
问:HTTP 不安全,如何解决。HTTPS 加密是如何实现的,有没有了解其中细节。
HTTPS,在 HTTP 的基础上数据走了层加密通道,emm 具体细节了解不多…
问:[期间都没聊分布式] 分布式熟悉吗,MySQL 分布式有哪2种模式。
emm 看过一些内容,业务没有上来过,知道一些名词…
二. 面试官总结
开始可能有些紧张了,项目也可以看的出是自己做的,但是表述的有些含糊,也没有特别的「亮点」,以百度正式员工标准,可能不太合适。
对自己做过的项目,如果能讲的比较好,有自己的想法,会有好一点的印象分。
计算机基础部分,也可以看一点书补补。
三. 自我评价
平时做开发,多数情况都是分析需求,网上找一个成熟的方案做适当调整,很少会再往深入的地方思考一步。
做的东西太偏业务层了,有些方案在小体量的环境下,不会太多出现问题,可一但业务量上去严谨性必然存在问题。
百度的面试官很 Nice,人很友善。期间我们还多聊了一些东西。我问了一些有关职业发展的问题,包括一些如外包进大厂的看法,他都给了很多中肯的意见与建议。
离开百度大厦后,被面试官(小哥 1992年)加了微信。
四. 小结论
- 面试需要有亮点
- 对项目或者某一方面要有些深入的东西
- 好学校是个很好的敲门砖
- x#?8*0-*@o