Shopee 资深面试官,手把手教你如何备战求职

本文由Shopee资深面试官分享,指导求职者如何备战职场,重点关注业务方向、工作方向、发展平台和面试准备。建议选择感兴趣且有发展空间的业务,如电商、物流等,明确后端开发的基本技能,如语言、数据库、网络协议等。面试准备中,基础知识、项目经验、开放性问题和数据结构&算法是考察重点,强调了诚信、心理素质和表达能力的软素质价值。此外,提到了Shopee的新人培养计划和招聘机会。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景介绍

笔者毕业于华中科技大学软件工程专业,在互联网摸爬滚打8年,一直从事后端开发工作,目前就职于 Shopee 供应链自营快递业务方向。在校招面试官的角色上,接触过的应届生近百人。受邀分享面试的经验技巧,借此机会总结对求职道路的一些心得。首先围绕「业务方向」、「工作方向」、「发展平台」三个方面,对工作选择的影响因素进行解释,其次着重给出「面试准备」的相关建议,希望对工作“小白”们有所帮助。

1、业务方向

虽然个人认为第一份工作主要以个人能力培养为主,对业务方向的侧重会弱一些,但是在允许的情况下,第一份工作便能选择自己所喜欢的业务方向,能更早地积累对应的业务知识,少走一些弯路。

现在软件行业比较火的电商、物流、支付、金融、保险等业务方向,都是不错的选择。Shopee 这家公司可以说集“爆款”于一身,面向东南亚、拉丁美洲等市场,做量身定制的本土化电商。在提供买卖家购物交易体验的同时,延伸了多元的丰富场景,例如自建物流渠道 Shopee Logistics Service、自营快递 Shopee Express、电子钱包 ShopeePay 等。还有诸如本地生活、数字银行等业务,这里就不详细展开了。

2、工作方向

相比业务方向能够及时转型,那么“陪伴”时间更长的当然是工作方向,也就是岗位的选择。因为软件开发是一种更偏向工程项目的工作,需要很多不同职责的角色,共同合作解决问题以实现目标。随着软件行业的快速发展,工作方向也越分越细,但无论是互联网还是传统行业里的软件开发,工作方向基本都分为产品、前端、移动端、后端、测试、运维、大数据、算法等。每个方向的工作职责完全不同,发展轨迹和技能需求差别巨大,所以求职准备的第一步就是明确好自己的发展方向,再有重点地做知识储备。

以后端开发为例,后端开发的工作主要涉到:需求分析、系统设计、功能实现、测试跟进、系统上线等。

为了完成以上基本工作,需要后端至少拥有以下基本技能:

  • 至少熟悉一种后端开发语言(Golang、Java、Python、C++等)
  • 熟悉主流数据库(MySQL)及中间件(Redis、Kafka等)
  • 熟悉常规的数据结构、算法(起码排序、Map、List 还是很常见的需求)
  • 熟悉 TCP/HTTP 等网络协议
  • 熟悉 XML/JSON 等常见数据交互格式等基本的技术能力
  • 熟悉 TCP/HTTP 等网络协议
  • 熟悉 XML/JSON 等常见数据交互格式等基本的技术能力
  • 抽象能力、沟通组织能力文档撰写能力等软技能

3、发展平台

第一份工作尤为重要,不仅仅是积累基本的技术能力,更重要的是个人软素质的养成,尤其以工作习惯最为重要。已经养成的工作习惯,在未来的职业生涯中是很难改变的,好的工作习惯可以让个人职业生涯走的更远。

大多数的小公司,由于人力资源所限,大多数人都身兼数职,没有过多的精力去系统地培养应届生,新人更多靠自学来提升能力,也就是通常说的野蛮生长。而相对成熟的公司,会有比较完善的新人培养体系,无论是基础技术能力还是软技能。同时用规章制度来指引新人的工作流程,以此来培养好的工作习惯。另外,会有更多的机会去接触复杂的业务场景,积累解决问题的能力。

以 Shopee 为例,在新人培养方面,为校招生量身定制了入职培训,叫作“虾米计划”。全程都有1V1导师带教,帮助大家顺利度过从“学校人”到“职场人”的转变。在工作规范上,Shopee 每个项目组都会有 Leader 和导师跟进新人每个需求的评审、方案设计、开发、自测、Code Review、测试、上线整个流程,让新人养成谋定而后动的良好工作习惯。

在公司业务上,Shopee 属于互联网大热的电商行业,且每年保持着强劲的业务增长,各种各样高并发、大数据、分布式等复杂的业务场景,为职场人提供加速成长的养料。

以我所在的供应链团队为例,做个简单场景的展示:

海量数据:千万级别的日订单带来的海量数据的存储、查询问题

大数据&算法:物流各个环节的成本优化(仓储、物流资源组合、快递分拣、运力资源调配等)

复杂业务:分段运输、多段订单、运单正向逆向(退货)等各种业务场景。

4、面试准备

接下来便是大家最关注的面试准备了,依据个人经验,我会列一些作为面试官会考察的方向。

基础知识

基础知识会占用整个面试的一半时间,通常基础知识的考察会有两个方向:

  • 单纯考察基础知识,例如计算机基础、计算机网络、数据结构等。

一切的复杂的架构都是基础知识加上先进的思想实现出来的,掌握了基础知识才能让我们更好的理解更复杂的架构,甚至未来产出属于自己的架构。无论是临时抱佛脚突击掌握,还是长期在校积累掌握该类基础知识,也都可以体现候选人在学习能力和学习态度上的潜力。换言之,如果你连基础知识都掌握不了,面试官如何相信你在未来能掌握更复杂的业务知识和系统架构呢?

  • 从项目经验出发,考察所使用到的语言和中间件。

如果候你在简历上或者自我介绍时,介绍了自己的一些项目经验,通常面试官会追问其中特殊场景的解决方案,例如:DB 和缓存数据一致、异步调用的一致性、大数据量的存储和查询等。如果能给出合适的解决方案的基础上,同时讲明对应的中间件或框架的设计思路、原理、源码等,可以说这轮面试过了一半了。

来自笔者的温馨提醒:

在一些基础知识、原理等问题上,比较介意和稀泥(明明不知道,给出一些漏洞百出的答案)。该类问题不知道就是不知道,但是可以引导面试官说自己知道类似的其他知识,也可以解释一下。

例如:面试官问 ZooKeeper 的集群同步原理,而你没有了解过该知识。你可以回答说,“ZooKeeper 没有使用过所以没有深入了解,但是之前使用 Redis 做 XXX,了解过 Redis 的集群同步原理。”

开放性题目

为了拉开候选人的差距,或者考察候选人解决问题的能力,会出一到两个开放性的题目。比如说让你设计一个 QPS 超过 10w 的查询功能。会重点看你的技术选择,能否给出合理的解释。并且会持续追问来看你对该技术的深度如何。当然适当的时候,面试官会给出一些提示,看你能否在提示下给出一些合理的答案。

来自笔者的温馨提醒:

和基础知识类考察恰好相反,此类问题比较介意候选人直接回答没思路、不知道之类的答案。最好在纸上列一下思考过程逐一讲给面试官,如果给不出解决方案,也可以说说在这个问题下,会有哪些隐藏的技术问题需要解决,可以体现候选人在思考问题上的严谨性。这类问题是为了考察你在未来工作中解决问题的能力,如果毫不犹豫地放弃,很难让人相信你在未来工作中,成为那个技术难题攻坚者。

数据结构&算法

随着各种面经的传播,各类公司都开始把编程题(算法 or 数据结构)加入到面试考核中。刷算法题也成为了关键,各种经典的链表、三列、树成为了每年校招的必刷题,建议大家做充足的训练准备。以 Leetcode 上的一个热门问题 无重复字符的最长子串 为例,一下两段代码都是基于滑动窗口的实现。

代码一:

func lengthOfLongestSubstring(s string) int {
  m := map[byte]int{}
  n := len(s)
  rk, ans := -1, 0
  for i := 0; i < n; i++ {
     if i != 0 {
        delete(m, s[i-1])
     }
     for rk + 1 < n && m[s[rk+1]] == 0 {
        m[s[rk+1]]++
        rk++
     }

     if ans < rk - i + 1 {
        ans = rk - i + 1
     }
  }
  return ans
}

代码二:

func lengthOfLongestSubstring(input string) int {
  // 记录已经出现的字符
  existCharacters := map[byte]int{}
  inputLength := len(input)

  // 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
  rightIndex, ans := -1, 0

  for leftIndex := 0; leftIndex < inputLength; leftIndex++ {
     if leftIndex != 0 {
        // 左指针向右移动一格,在已出现的字符集合中移除该字符
        delete(existCharacters, input[leftIndex-1])
     }

     for rightIndex+1 < inputLength && existCharacters[input[rightIndex+1]] == 0 {
        // 右指针右移
        existCharacters[input[rightIndex+1]]++
        rightIndex++
     }

     // 第 leftIndex 到 rightIndex 个字符是一个最长的无重复字符子串
     ans = max(ans, rightIndex-leftIndex+1)
  }
  return ans
}

func max(x, y int) int {
  if x < y {
     return y
  }
  return x
}

明显第二段代码的可读性高于第一段,通常代码的可读性都是通过一些注释、变量命名、方法命名、代码组织等编码习惯来提升代码可读性。

因为很多题解都是单纯的解决问题,并没有过多的考虑可读性,我们在刷题的时候,可以考虑将题解里的方案,按照自己的理解进行重写(调整代码组织、修改变量命名以及增加注释等),这样不仅在面试中,能交出来比其他人更优质的答案,而且也能加快理解速度,比死记硬背的效果要好很多。

除此之外,编程题所要考察的,不仅仅是候选人在数据结构和算法上的积累,还考察:

  • 个人的编码习惯(变量命名、异常判断)
  • 思维的严谨性(边界处理,例如链表的头结点和尾结点的判断等)
  • 将想法转化为代码的能力

虽然都说编程题存在知之为知之、不知为不知的情况,但是遇到没刷过的题,可以先整理思路,与面试官交流、讨论可行性,再将可行的思路写出来,也会给面试官留下很好的印象,甚至成为加分项。

软素质

尽管软素质不会有专项问题,但是一些表现会直接影响面试结果,例如:

诚信,由于今年疫情严重,多数面试改为线上面试,这就增加了很多操作空间。但是各个公司的面试平台都有比较完善的反作弊工具,每一次切出面试平台的操作,面试官都能看到。以及候选人屏幕上的反光、翻东西的声音、眼神的转动等,面试官都看的清清楚楚。所以诚信永远是最重要的原则,以免留下不可扭转的面评记录。

心理素质,放松心态,不要紧张,面试官不是洪水猛兽。一旦你表现的很紧张,不仅无法很好的发挥自己的实力,还会留下心理素质较差、抗压能力不行的印象。

表达能力,面对问题不要随便回答,最好整理好思路,思考清楚再回答。如果一些未经组织的表达,让面试官对你的答案有什么误解就得不偿失了。

5、总结

互联网多元化且高速发展,与其他行业最大的不同便是它的热门业务时刻在变化,从高速发展初期的电商、社交,到近几年大热的直播、短视频等,互联网会应当时情况衍生出对应的热门行业。再加上相对其他行业较高的薪资水平和相对公平的竞争环境,吸引着越来越多的人涌入其中。作为互联网中核心的软件开发人才,在各个公司拓展新业务的道路上不可或缺的资源。虽然越来越多的人才涌入这个行业带来了更大的就业压力,但是开发岗位的面试相对更纯粹,竞争更公平,面试官的主观因素对面试结果的影响较小,只要不断提升技术能力,就会有更大的机会找到心仪的工作。

当前 Shopee 春招已经结束,同学们可以在6月左右关注23届的提前批、秋招机会,还会释放大量的研发岗位。至于社招机会,Shopee 一直在做很多招聘动作,尤其是3-5月的乘风季专题,北京、上海、深圳三地都上线了丰富的专场活动、热招岗位,具体信息大家可以在官方招聘号「Shopee虾皮招聘」进行了解。

感谢阅读,更多的java课程学习路线,笔记,面试等架构资料,私信我【资料】即可获取免费资料!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值