今天在论坛上看到一个帖子,一位华中科大的同学,因为家中父亲突然病倒,发求助帖:
请问大家,春招走哪个方向能最快找到工作?还是说继续读研呢,但是家里急需钱……
当时这个帖子直接热榜第一,然后牛客网创始人直接给这位同学开了一年会员表示支持。
然后其他网友也纷纷提了自己的鼓励和意见。
时隔三个多月,这位同学更新了自己的近况,希望对正在学习、求职、工作的朋友们,有所激励:
时光荏苒,不知不觉,三个多月的时光就过去了。
今天,我想和大家分享一下这三个月春招的经历。
寒假期间,我发布了求助帖,根据大家的建议,过完年我在BOSS上联系到了华为软件开发HR。
开始一切似乎都很顺利,对方热情地与我交流直至3月中旬面试。
但是,在技术面试的第二轮之后,就没有任何消息,一直卡在那里。
主管面试迟迟没有消息,我的申请也没有被明确拒绝。
那是我第一次面试,没有太多经验,没想到可能是KPI。
大约半个月后,HR告诉我没有HC(Headcount,岗位名额)了,并建议我联系其他部门。
当时已经快到四月,我开始四处奔波尝试,却发现几乎所有部门的HC都没了。
其中一个部门的HR非常想捞我面试,但当他查询系统时,发现之前的部门还没有释放我的流程,导致他操作……
然后华为之前的部门一直拖着,结果过了一段时间,原部门的HR觉得我的项目经验不足,直接给我挂掉了。
当时软件开发的HC都没了,我也无法转到别的部门……
在这三个月,我也参加了多家大厂中厂的面试、笔试。
其中有些公司的笔试,我表现不错,全部正确,但都没能通过最后的面试,比如360、完美世界等。
等到了四月份,又陆陆续续参加了很多面试,仅腾讯就有四次。
第一次是腾讯新闻,一面通过,第二面十几分钟内结束,然后秒挂掉;
第二次是应用宝,泡池子一周挂掉;
第三次是Level Infinite(一个面向腾讯海外的部门),然后一面hr很喜欢我,说我对案例分析很透彻想的很周到,结果二面kpi给我挂了;
第四次QQ的面试我放弃了,因为感觉TX似乎在不断侮辱我。
此外,我还尝试了虾皮、快手、蚂蚁和小米等企业的面试,最终都没有好的结果。
最终在4月底,我拿到了华为专业类的软件验证工程师和毕业地的保底offer。
我被毕业答辩和找工作的事情焦虑地睡不着觉,最终决定春招到此为止吧,就接受这两个offer。
悲喜交织的春招之路充满了曲折与挫折。我会带着这些教训和经验,继续向前,感谢大家的经验和支持。
最重要的是,把握住目前的机会,完成我的学业,然后回家多陪陪父母,家人才是最重要的。
以上,基本上就是这位同学的春招经历。
白露看完之后很有感触,然后就开始出题,因为我觉得,这位同学的春招之旅结束了,但是其他同学的春招、秋招之旅可能才刚刚开始。
场景题:扫码登录是如何实现的?
大厂面试过程除了八股文,经常会问一些场景题,顾名思义,假设一个场景,需要你给出解决方法,没有标准答案,但是必须得有自己全面的思考。如果接下来的内容你不会,建议点击这篇文章获取学习策略:
(TODO)
面试官: 接下来我想考察一下的你对实际问题的分析。首先,我想了解一下你对扫码登录的基本工作原理有多少了解?
求职者: 扫码登录的基本原理是利用二维码作为信息传递的载体,将登录唯一标识编码到二维码中。
用户通过手机扫描二维码,手机会读取信息并向服务器发送一个登录请求,请求中包含二维码携带的标识。
服务器接收到请求后验证标识,确认无误后更新登录状态,并通知原请求页面进行相应的用户状态更新,完成登录过程。
面试官: 能否详细描述一下扫码登录的完整流程?
求职者: 当然可以。扫码登录的流程主要包括以下几个步骤:
- 生成二维码:用户在Web页面点击“扫码登录”,服务器生成一个唯一的标识(比如UUID),将这个标识编码成二维码并显示在页面上。
- 扫描二维码:用户使用手机上的应用(如App内扫一扫功能或微信等)扫描二维码。
- 发送登录请求:扫描后,手机应用解析二维码中的标识,并将其作为登录请求发送到服务器。
- 验证请求:服务器接收到登录请求后,根据请求中的标识进行验证。验证成功则认为用户登录请求有效。
- 更新登录状态:验证成功后,服务器更新该标识对应的登录状态为已登录,并将登录状态变更通知到原请求页面。
- 完成登录:Web页面接收到登录状态变更通知后,更新页面为用户已登录状态,展示用户信息。
面试官: 很清晰。那在这个过程中,生成二维码的方式及其中包含的信息是怎样的?
求职者: 生成二维码通常使用专门的库,比如在Java中可以使用ZXing库。二维码中通常包含一个让服务器能够唯一标识登录请求的信息,这个信息可以是一个加密的Token或者一个包含标识符的URL。
这个标识符通常是随机生成的,确保每个扫码请求都是唯一的,从而防止重放攻击。
面试官: 在实现扫码登录的后端服务时,服务器是如何处理并发请求的?如何维持每个请求的状态?
求职者: 服务器处理并发请求时通常会使用会话管理和状态存储机制。
登录状态可以存储在内存中,比如使用内存数据库如Redis,以便实现快速读写。
每个扫码生成的唯一标识作为键,登录状态作为值存储。
对于状态的维护,一旦用户使用手机应用扫码并验证成功,服务器将更新对应的状态。
至于并发控制,可以通过分布式锁或者乐观锁机制来确保状态更新的原子性和一致性。
面试官: 前端页面和后端通信的机制是怎样的?如何保证前端页面能及时响应后端的登录状态变化?
求职者: 前端页面和后端通信通常使用WebSocket或轮询等技术。
WebSocket提供了一个全双工的通信渠道,一旦用户的登录状态发生变化,服务器可以通过WebSocket主动推送消息给前端,前端接收到消息后更新用户界面。
如果不使用WebSocket,也可以通过轮询方式,即前端定期向服务器发送请求,询问登录状态是否有变化。一旦检测到登录状态改变,前端立即更新页面。
面试官: 在扫码登录功能中,安全机制应该如何设计来防止二维码被伪造,以及如何保证登录会话的安全?
求职者: 为了防止二维码被伪造,我们可以在生成二维码时加入数字签名或者使用一次性密码(OTP)。
这样即使二维码被复制,没有相应的签名或动态密码也无法通过验证。
此外,为保证登录会话的安全,一旦用户完成登录,应立即使二维码失效,防止重复使用。
还应确保会话标识符足够随机,避免被猜测。
服务器端还应实施合适的会话管理策略,比如使用HTTPS来保护数据,在服务器端验证会话标识符的有效性等。
面试官: 如果在用户登录过程中出现异常,比如网络中断或二维码过期,你会如何处理?
求职者: 如果出现异常,我会确保前端能够给用户清晰的反馈。
比如,如果网络中断,可以提示用户检查网络连接;
如果二维码过期,可以提示用户刷新页面重新获取二维码。
在后端,我会实现适当的超时机制来处理过期的登录请求,并提供重试的机制,使得用户可以重新尝试登录。
面试官: 当我们考虑大规模使用扫码登录时,如何优化响应速度和系统的负载能力呢?
求职者: 嗯……我们可以采用以下策略:
- 负载均衡:使用负载均衡器分发请求到多个服务器,以避免单点压力过大。
- 缓存机制:使用缓存来存储频繁读取的数据,如二维码的标识和状态。
- 异步处理:采用异步消息队列处理耗时的后台任务,避免阻塞主线程。
- 数据库优化:通过数据库索引、查询优化和合理的数据分片来减少数据库访问延时。
- 资源监控:实时监控系统资源使用情况,如CPU、内存和网络IO,及时发现瓶颈并进行调优。
面试官: 用户在使用扫码登录时的体验非常重要。你如何考虑优化用户体验?
求职者: 为了优化用户体验,我们需要考虑以下几个方面:
- 交互设计:确保扫码登录流程简单直观,减少用户的操作步骤。
- 响应速度:优化前后端处理逻辑,确保快速响应用户操作。
- 错误处理:提供清晰的错误信息和问题解决指引,帮助用户快速定位并解决问题。
- 多平台适配:确保扫码登录功能在不同设备和浏览器上都能稳定运行。
面试官: 很好,你的解答非常全面。感谢你的参与。我们会尽快给你反馈结果。祝你好运!