热招技术岗上岸指南

内容纲要

前言

什么是热招岗位?

从近年来的互联网大厂招聘需求中,可以总结出行业内近年的人才缺口主要分布在哪些岗位。这些岗位的人才要求、技术门槛、发展空间、乃至面试中的考核侧重,都可以为求职者在求职面试过程中找到发力的方向和标杆。

本 LeetBook 涉及的内容便涵盖了几个典型的热招岗位:前端、后端、算法、测试、数据分析。这些热招岗位的招聘要求如何?发展前景如何?面试考点又有哪些?如何应对面试?阅读本 LeetBook,你会豁然开朗!

你将:

解读 7 套研发岗位基础知识框架
了解 6 大互联网热招岗位的基本信息和人才需求
学习 6 大互联网岗位招聘要求及面试指导
练习 50 道高频岗位面试题
你可以这样学:

借助海量思维导图,快速构筑基础知识网络
结合数据报告与趋势分析快速了解岗位情况
解读真实招聘 JD,理解岗位招聘要求
通过 LeetCode 高频面试题演练,提升解题能力

成长收获

提升对岗位的认知与理解,准确规划职业发展方向
形成岗位必备知识网络,规划出清晰的学习路径
收获面试指导,高效地准备面试

适合人群

正在找寻实习或参加校招的同学
缺乏岗位认知和面试经验的求职者
想要补全岗位技能的学习者

互联网技术知识点总览

  • 互联网技术岗位
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 数据库
  • Linux
  • 设计模式

互联网技术岗位

操作系统

计算机网络

数据结构与算法

数据库

Linux

设计模式

后端工程师

后端工程师隶属于软件研发工程师,是从事软件开发相关工作人员,其主要职责是 平台设计、接口设计 和 功能实现。作为后端人员,有很多的就业机会,根据你的编程语言掌握情况、个人经验和薪资追求等,可以申请 Java 开发、 PHP 开发、游戏开发人员或 Web 开发人员等职位。

在国内,Java 程序员是后端开发工程师中最大的一部分群体,其市场需求量也是居高不下,C++ 程序员也是热门岗位之一,此二者的比较也常是热点话题,例如新学者常困惑的问题之一 —— 后端开发学 Java 好还是学 C++ 好。本文将从这两个大方向做详细讲解,希望读者们读后有所启发,可以从自身情况、未来的发展,岗位需求量和薪资待遇等方面去考虑自我的求职方向。

Java 工程师

无论是从每个月的编程语言排行榜上看,还是从各大招聘网站人才招聘需求上看,Java 依然是 IT 行业中最热门、最抢手的编程语言。根据 IDC 的统计,在所有软件开发类人才的需求中,对 Java 工程师的需求曾达到全部需求量的 50% 以上。并且,Java 工程师的薪水相对较高。通常来说,具有 3~5 年开发经验的工程师,年薪几十万是比较正常的薪资水平。下面笔者将从以下三个方面进行详细讲解,帮助你对 Java 相关岗位的招聘需求、岗位要求、学习路线等有更充分的了解。

招聘要求

目前互联网企业在不断发展,急需高端的 Java 开发人员。分析各个公司对 Java 工程师的招聘需求,可以了解到一个合格的 Java 工程师需要掌握的技能,下图是笔者根据各大公司招聘官网收集到的岗位信息汇总得出,因篇幅有限,文中仅列出部分知名公司的岗位分布情况。

公司招聘需求

通过对各大公司的岗位需求进行统计,可以明显看出:岗位需求从高到低排序依次是研发岗、算法岗、数据开发、测试开发、前端开发、安全、运维、硬件、其它、网络。需求量排名前 4 的几种岗位中 Java 方面的职位几乎都涵盖其中,可见 Java 在各大公司的需求量都很大,具体的岗位详情可以参照下方部分公司岗位信息汇总。

Java 相关岗位分类

Java 工程师对应的岗位可以大体分为 Web 开发、Android 开发、客户端开发以及游戏开发,并且作为业界长老型语言,相对于其他编程语言,不管是之前的霸屏语言,还是后起之秀,都不及 Java 的就业岗位多。

通过以上分析可以发现,无论从招聘企业,还是从招聘需求来看,Java 工程师都有很大的就业市场。笔者从 2021 届校招的薪资水平来看,Java 工程师的薪资水平在技术岗平均水平之上。

岗位要求

应届生在找 Java 相关岗位前,首先要明确各个大厂对 Java 工程师的招聘需求。下面以 2021 年百度校招的 Java 研发工程师的岗位为例:

综合各个大厂校招对 Java 的岗位要求进行分析,Java 相关岗位的应聘要求主要包含以下几个方面:

  1. 学历

每年秋招,各个大厂都喜欢在 985,211 等名校进行校园招聘宣传。在招聘时,相较于普通本科生,研究生会更受大厂的青睐。当然,对于技术岗而言,好的学历只是加分项,其更看重你的技术水平、实习经历、项目经历、奖项等。

  1. 实习、项目经历、奖项

在大厂的技术面试中,HR 比较关注你的项目经历、实习经历以及竞赛经历。如果你的项目经历或实习经历刚好和该岗位的工作内容相关,HR 会深入了解。如果回答得令 HR 满意,很大机率会进入下一轮面试,或者直接进入最后的终面。现在开始,好好利用寒暑假的时间找实习,在校期间做好实验室项目,平时在 GitHub 上传你的开源代码,这都将助你在秋招时找到自己心仪的工作。最后,一些高质量的竞赛也是简历中的加分项。

  1. 计算机基础知识

算法和数据结构是面试中的必考项,在面试中会要求手撕代码,其次是操作系统,你需要了解 Windows、Unix、Linux 等主流操作系统原理,熟练运用系统层支持应用开发,然后是计算机网络等知识。

  1. Java 相关知识

面试 Java 相关岗位,需要熟练掌握 Java 编程语言,有扎实的 Java 基础知识。其次熟悉 Java 常用框架和工具,如 Spring boot 、Spring Cloud、SpringMVC、Struts、Hibernate、Mybatis,理解 Java 常用设计模式,如 Java 数据结构,多线程编程,Java IO 等。同时,还需具备优秀的分析问题和解决问题的能力以及良好的沟通能力和团队精神。

  1. 数据库

数据库也是 Java 面试中的必备项,MySQL、Oracle、Redis 等数据库相关知识需要复习准备,建议在网上找一下相关面经,针对常问问题做准备。

如何准备面试

笔者在准备 Java 面试时探索了很多的学习方法,在这里分享给大家,希望你对 Java 学习和面试有更清晰的了解。

  1. Java SE 部分

《Head First Java(中文版)(第2版)》:Head First 系列教材,阅读起来都特别轻松,图文并茂,简单易懂,非常适合初学者学习,不足是书中只介绍了一些最基础最实用的内容,知识点不够丰富。

《Java 核心技术第七版卷Ⅰ(基础知识)》:本书系统全面地讲解了 Java 语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强,第 1 章概述了 Java 语言与其他程序设计语言不同的性能。

  1. Java EE 部分

《Spring 技术内幕:深入解析 Spring 架构与计原理(第 2 版)》:本书从源代码的角度对 Spring 的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透 Spring 框架的优秀架构和设计思想,还能从 Spring 优雅的实现源码中一窥 Java 语言的精髓。

《Hibernate 实战(第2版)》:本书由 Hibernate 之父 Gavin King 亲自执笔,深入剖析了 Hibernate 3.2 和 Java Persistence 丰富的编程模型,还深刻阐述了数据库设计、对象/关系映射(ORM)和优化等方面的基本原则、策略和最佳实践。

《Struts 实战》这本书,中译版也达到了信达雅的翻译水准,技术书籍里面不多见,笔者认为唯一一点小瑕疵可能是将 action,interceptor,result 等术语也翻译成了中文。

《深入浅出 MyBatis 技术原理与实战》:本书分为 3 个部分,依次介绍了 MyBatis 的基础应用、原理及插件开发、实践应用,使读者能够由浅入深、循序渐进地掌握 MyBatis 技术。

《看透 Spring MVC》是国内资深 Web 开发专家根据 Spring MVC 新技术撰写,基于实际生产环境,从基础知识、源代码和实战 3 个维度对 Spring MVC 的结构和实现进行详细讲解。

  1. Java Web 开发核心内容

《深入分析 Java Web 技术内幕》:本书是 Java Web 的集大成之作,涵盖了大部分 Java Web 开发的知识点,作者是资深的淘宝 Java 工程师,恨不得在一本书里把所有的 Java Web 知识点都给讲清楚,不过,一本书显然无法把所有细节都讲完,但是作为 Java Web 的入门或者进阶书籍来看的话还是很不错的。

目前市面上 Java Web 书籍的质量参差不齐,如果从笔者的角度推荐,这一本足矣。

  1. JDBC 编程

《JDBC Recipes》这是关于 JDBC 的一本书,涵盖了Java EE5 发布之前的内容。它是一本用 MySQL 和 Oracle 数据库来学习 JDBC 的好书。教你如何连接数据库、执行 SQL 查询、检索结果、使用 PreparedStatement、读写 BLOB 和CLOB、处理 DATE, TIME 和 TIMESTAMP 以及其他几个重要的 JDBC 概念。

《JDBC API Tutorial and Reference》:学习 JDBC 最好的一本书是其源代码本身,即 Sun Microsystem、Maydene Fisher、Jon Ellis 和 Jonathan Bruce 撰写的 JDBC API 教程和参考资料,它是 Java 系列的另一本好书,它教会了你关于 JDBC 的一切。它使 JDBC 易于学习,甚至对新程序员也十分容易上手。它提供了大量有价值的背景信息,并补充了 JDBC 规范。

  1. XML 编程

《XML1.1 宝典》非常详细地讲解了 XML 的语法及应用,堪称 XML 的教程宝典,强烈推荐!

  1. 计算机网络

《图解 HTTP》:图解 HTTP 是一本教你全面掌握 HTTP 协议的电子图解教程,全书知识结构完整,内容全面。

《网络是怎样连接的》:这本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。目的是帮助读者理解网络的本质意义,理解实际的设备和软件,进而熟练运用网络技术。同时,专设了“网络术语其实很简单”专栏,以对话的形式介绍了一些网络术语的词源,颇为生动有趣。

《计算机网络-自顶向下方法》:这也是笔者看过的一本书,本书内容详细,非常推荐,但新手读起来可能很枯燥....如果是新手,更推荐前两本,每天利用碎片时间阅读即可。

目前《图解 HTTP》和《网络是怎样连接的》以及计算机网络相关的面试题在力扣学习板块供阅读。此外,《计算机网络面试突击》 也推荐大家阅读。

  1. 操作系统

《深入理解计算机系统》:如果想打下扎实的计算机基础又不想把操作系统计算机结构编译原理这些书统统读一遍,阅读本书是最有效率的方式。

《操作系统导论》:全书围绕虚拟化、并发和持久性这 3 个主要概念展开,介绍了所有现代系统的主要组件(包括调度、虚拟内存管理、磁盘和 I/O 子系统、文件系统 )。

  1. 算法与数据结构

《算法导论》、《算法》、《计算机程序设计艺术》这三本书是非常经典的算法与数据结构书籍,因为篇幅较长,阅读起来比较费劲。但如果想更深入地学一遍算法与数据结构,还是比较推荐阅读的。

  1. 设计模式

《Head First Design Patterns》:Jolt 大奖得主,本书介绍了常见的十几种设计模式。笔者认为本书是最好的设计模式入门书籍。力扣学习板块也有 《深入浅出设计模式》 可供大家学习,这本 LeetBook 内容生动,并配备有练习题。如果你对设计模式了解较少,阅读这本 LeetBook 最合适不过,即使你水平不错,相信看了也会有收获。

小结

笔者也参加过很多 Java 面试,对 Java 校招有一定的了解。对于 Java 岗位的准备,笔者主要做了三个阶段的学习规划,时间安排上是建议花 1-2 两个月对基础进行一个巩固,对于算法的学习上是建议花至少一个月来学习并且每天都要保持一定的刷题量。关于项目,建议花一个月的时间对自己做的项目进行梳理和总结,下面是笔者为每个阶段准备的具体过程,可供大家参考。

一、首先,便是对 Java 技术栈的复习,这也是最重要的一部分,因为面试永远都是考基础考得最多。这部分内容可以细分为多个方面:

Java 知识体系:包括了 Java 基础,集合类,设计模式,Java 并发技术,Java 网络编程,JVM,JavaWeb,Spring 框架等等。
力扣学习板块也有针对 Java 的面试题整理 《Java 面试突击》,大家可以按需学习。

计算机基础:包括了操作系统,计算机网络,数据结构,数据库,缓存等内容。

后端进阶:包括了分布式理论,以及常见分布式技术比如负载均衡,zookeeper,消息队列,分布式缓存等等。当然,这里面也包括系统架构方面的知识,以及 RPC,微服务等内容。

额外内容:这部分内容因人而异,笔者主要是因为实习时的项目涉及了 hadoop 以及私有云技术栈,所以看了很多这方面的内容,譬如 Hadoop 生态,OpenStack 生态,以及 docker 生态。

二、其次,便是对算法的学习了。笔者也将算法的学习分为了几个部分。

基础数据结构与算法:主要是复习之前学过的数据结构和算法,额外再看一些算法书籍,譬如 《算法图解》,以了解常见算法。

剑指 Offer:剑指 Offer 基本上是面试必考的,所以把它刷个两三遍是很有必要的。
目前,力扣上也有 剑指 Offer 与 剑指 Offer(专项突击版) ,可供大家学习。

力扣:搞定前面两项之后,刷力扣其他题目也会有些底气了。

笔试真题:这部分无需多言,真题是必须要刷的。毕竟各个公司的出题套路不一。刷题多了,就会遇到很多原题和类似题目,所以,尽量早做好准备。

三、最后一部分,笔者花了 1 个月时间梳理项目。大概说下做项目的几个要点吧!

1.为什么有实习经历还做项目?笔者觉得实习过程自己接触的东西太细碎,没有对全局做把控,此外,想充实一下个人 GitHub,顺便学习新技术。于是笔者选择了当时 Java 面经中提到的两个项目练习。

2.关于项目选择:笔者选择了覆盖新技术、并提供代码的近期项目,避免自己要写前端的尴尬。

3.把项目放到 GitHub 上:笔者之前对 git 比较熟悉,所以想把这个项目按照正常开发流程走一遍,每天都会做一个模块,然后发布几个版本,记录一下版本更新细节。

本文针对 Java 相关岗位的招聘需求、岗位要求进行了详细的分析,并简单介绍了 Java 相关岗位的学习路线,希望对想要求职 Java 岗位的同学有所帮助。

C++ 工程师

相比 Java 语言方向,C++ 入门简单,精通难,找工作竞争压力更小,但 C++ 依然是近年来招聘的热门岗位之一。本文将从以下三个方面进行详细讲解,帮助你对 C++ 相关岗位的就业前景、岗位要求、学习路线等有更充分的了解。

招聘需求

C++ 相关岗位是技术招聘的热门岗位之一。笔者参考 2021 届应届生春招、秋招情况,按照行业分类对招聘该岗位的公司及 C++ 岗位方向进行了分类,方便大家对 C++ 相关的岗位需求有一个初步认识。因篇幅限制,下图仅展示部分企业。

公司招聘需求

通过对各大公司的 C++ 相关岗位的统计,有以下发现:

头部互联网企业如字节跳动、腾讯、阿里巴巴、百度、美团、滴滴、京东等均对 C++ 工程师有一定的需求。

深圳、上海、北京、杭州、广州、西安、苏州、南京等互联网行业发展迅速的城市对 C++ 工程师的需求量都是比较可观的。

C++ 相关岗位分类

C++ 工程师对应的岗位可以大体分为客户端、服务端、游戏领域以及嵌入式平台的开发。对于算法工程师而言,熟悉 C++ 语言也是十分必要的,一些算法的底层框架都是 C++ 语言开发的。

通过以上分析可以发现,无论从招聘企业,还是从招聘城市的角度来看,C++ 工程师都有很大的市场,笔者从 2021 届校招的薪资水平来看,C++ 工程师的薪资水平在技术岗平均水平之上。

岗位要求

前文介绍了公司对 C++ 工程师的招聘需求,想必你对 C++ 工程师已经有了初步的了解。如何确定自己是否符合 C++ 工程师的要求呢?最高效的方法是去目标公司的招聘官网下查看岗位描述,并对 JD 进行分析,如有欠缺可及时查漏补缺。下面,以一则知名企业 C++ 校招岗的 JD 为例:

通过对各个公司的 C++ JD 分析,C++ 岗位要求主要包含以下几个方面:

  1. 学历
    对于校招来说,大多数企业的要求是“本科及以上”。然而笔者经历了秋招以后发现,虽然很多公司最低门槛是本科,但是在知名企业的面试中,研究生的简历通过比例远远多于本科生。当然,作为技术岗位,学历只是一方面因素,如你的技术水平比较突出,有优秀的开源项目经历、优秀的实习经历,也能帮助你斩获名企 offer。

  2. 实习、项目经历
    技术面试非常注重实践经验。一段优秀的实习经历或项目经历是拿到好 offer 的敲门砖。在面试的过程中如果没有拿得出手的项目,恐怕简历都很难通过。如果你没有时间参加实习,可以好好准备在校期间实验室做的项目或者 在 GitHub 上上传开源项目,作为简历的加分项。另外,一些高质量的编程竞赛也是简历中的亮点。

  3. 计算机基础知识
    算法和数据结构、计算机网络、操作系统等计算机基础知识是技术面试和笔试中必考的内容以及岗位 JD 中常出现的要求。它们通常是计算机专业学生必学的课程,对于想要转行的小伙伴,需要花一定时间学习和准备。通过计算机基础知识的学习,除了应对技术面试外,也能够帮助大家在实际工作中夯实技术根基。

  4. 语言要求
    对于 C++ 相关岗位来说,对语言的熟练掌握是基本要求。求职者不但要掌握 C++ 语言本身,还要对 STL 库能够熟练使用,最好知道其底层原理,甚至要求对设计模式有一定的了解。在笔试或者面试的过程中,不可避免需要考察代码,对于笔试而言,需要能用 C++ 语言进行熟练编程。对于面试而言,一些公司会要求手撕代码,不仅仅要把这个程序编出来,给面试官讲明白思路,还要知道如何去优化(降低时间复杂度或者空间复杂度等)。想要在面试中熟练解答出题目,平时在力扣刷题时需要多思考如何答题,针对每道题思考多种解法。在面试过程中,有些面试官喜欢问 STL 库中一些数据结构的底层实现方式,甚至会要求写源码(当然可能不多见),因此 STL 库也要熟悉。

  5. 数据库
    数据库是面试中必问的知识,大家一定要对众所周知的关系型数据库或者非关系型数据库中的一种甚至几种十分熟悉,而且对数据库中的一些概念也要烂熟于心。

  6. 系统
    C++ 语言相关的岗位多偏向后端,所以 JD 中大多都要求熟悉 Linux 系统。从工作的角度来讲,Linux 系统是工作中必会用到的。但在面试过程中,笔者觉得其重要程度不及上文中提到的计算机基础知识、编程语言和数据库。

如何准备 C++ 工程师面试

上文对 C++ 工程师的招聘需求、岗位要求进行了简单的介绍,接下来将介绍本篇文章的硬核内容:如何准备 C++ 工程师面试?

笔者将结合自身面试经历以及一些面试经验贴为大家汇总了一张 C++ 工程师学习路线图,只要你用心准备,一定能收获满意的 Offer。

语言基础

  1. 《C++ Primer(第五版)》 涵盖了 C++ 中的所有语法,内容非常丰富,建议大家至少看一遍,后续再看的时候可以将其当作一本字典,哪部分没有掌握就去查一查。
  2. 《STL 源码剖析(侯捷著)》 详细地讲解了 STL 中一些数据结构中的源码以及设计理念,这也是面试中面试官非常喜欢问的知识点。如果有时间,你可以从头到尾认真看。或者在查看面经中看到某个问题,去书中查找相关内容认真阅读,当理解了数据结构的底层设计理念,无论面试官怎么问都能游刃有余。
  3. 《Effective C++(侯捷译)》 详细讲述了 55 个条款,根据实际的例子告诉我们在编程的过程中程序应该怎样设计会达到安全、高效的状态以及一些切忌的 points,掌握了这 55 个条款会对我们在实际项目中的编程有很大的帮助。
  4. 《深度探索 C++ 对象模型》 本书讲述的内容更加侧重于 C++ 中一些知识点的底层设计理念,阅读起来比较晦涩难懂,可以对 C++ 有一定基础后,再慢慢看这本书。

算法和数据结构
《大话数据结构》、《数据结构(严蔚敏著)》 这两本书中涉及到的所有的数据结构是必须掌握的。掌握是一方面,还要能在做题的过程中熟练应用。谈到刷题,力扣上已经有了 2000 + 道题目,短时间内刷完肯定是不现实的,并且有些题目要反复刷才能烂熟于心,在这里给大家的建议是:《剑指 Offer》 至少刷两遍,力扣中等难度及以上的题目多刷一刷,尽量涵盖到每一个知识点。

计算机网络

学习计算机网络可以先看 《计算机网络(第七版,谢希仁著)》 或者 《计算机网络--自顶向下方法》 把握整体内容,再看 《TCP/IP详解(第二版)卷一》、 《Unix 网络编程卷一》 深入理解其中的精髓。

操作系统

操作系统也是面试中的重头戏。《深入理解计算机系统》这本书比较通俗易懂,可以先看。对于 Linux,可以阅读《鸟哥的 Linux 私房菜(第四版)》,本书的内容很多,可以先快速浏览了解大概,有一定理解后再深入细节。

设计模式

学习设计模式推荐 《大话设计模式》,这本书中提到的 23 种设计模式并非都要掌握,但要掌握常见的单例模式、工厂模式、观察者模式等,并能写出源码以及了解其使用场景。

数据库

学习数据库推荐 《MySQL 必知必会》,对数据库的基础知识有一定的理解。对于 Redis,可以有选择地看,如果对该部分不是很了解,对于 C++ 相关岗位的校招生而言也没有太大的影响。

小结

看完以上内容,想必有不少小伙伴感到学习压力很大。这里需要强调的是:我们并不需要把这些知识都掌握了再去面试,而是在面试的过程中,边巩固边学习,或许一些知识还未完全掌握,Offer 已经拿到了。并且,面试也是一个非常好的学习渠道,通过面试我们可以比较清晰地了解到,每一个知识点要掌握到什么程度,哪些知识点是重点。

这里也建议大家多去力扣的「讨论」看看其他同学总结的各大企业面经,其中有不少高质量的面经值得参考;力扣「学习」板块的 LeetBook《C++ 面试突击》 也有针对 C++ 岗位的知识点总结,大家可以根据需求及时查漏补缺。

最新高频面试题

leetcode 912. 排序数组
leetcode 160. 相交链表
leetcode 103. 二叉树的锯齿形层次遍历
leetcode 141. 环形链表
leetcode 102. 二叉树的层序遍历
leetcode 92. 反转链表 II
leetcode 146. LRU 缓存机制
leetcode 215. 数组中的第 K 个最大元素
leetcode 105. 从前序与中序遍历序列构造二叉树
leetcode 25. K 个一组翻转链表

前端工程师

从 MVC 到 MVVM,从页面到工程化,从浏览器到全端应用,前端技术近几年来保持着极高的发展速度,应用场景不断拓展,前端技术能够满足的需求越来越多,前端岗位的数量也不断增长,前端工程师的薪资待遇稳步提升,发展前景十分广阔。

根据某招聘软件(BOSS直聘)数据统计,截止至2021 年 7 月,四大一线城市的 web 前端岗位近一年的平均月薪为:北京 13709 元 上海 13573 元 深圳 12096 元 广州 9306 元
以深圳市为例,从 6 月 11 日到 7 月 22 日,连续 6 周,web 前端岗位月平均薪资对比上月同期上涨值为 2.45 %

招聘需求

2021 年,市场对前端工程师的需求依然旺盛。所谓知己知彼,百战不殆,分析各个公司对前端工程师的招聘需求,一方面可以了解到前端各细分领域在企业的需求情况,调整自己对岗位和薪资的期待,另一方面可以获得各种前端技术在企业中的应用情况,调整自己的学习和面试准备方向。因篇幅所限,文中仅列举少数大厂的岗位分布情况。

公司招聘需求

通过对百度、阿里巴巴、腾讯、字节跳动、美团和滴滴的官网的岗位需求数量进行统计,获得前端岗位数量占技术岗位(含开发、测试、运维等)总数量的比例如图所示:

可见前端岗位在各大公司的需求量都很大,平均占比超 10%

前端岗位分类

按等级划分
前端岗位按等级划分,一般分为初级、中级、高级(资深)和专家。大厂的初级多通过校园招聘,社会招聘的起始等级多为中级或高级。

等级越高,岗位要求越高,薪资越高。相应地,面试流程,面试轮数,面试官的级别,面试题型和难度,是否做背景调查,调查到什么样的程度都与等级息息相关。

通常情况下,校园招聘更侧重对面试者学习能力、逻辑及理论的考察,社会招聘更侧重对面试者学习习惯、理解及实践的考察,但由于等级的限制,前者的面试难度大体上低于后者,把握校园招聘的机会依然是应届生进入心仪企业的较快途径之一。

我们随机抽取了 60 个当前正在招聘的年薪在 20 万以上的前端岗位,各职级占比如图所示:

按领域划分
前端工程师的对应岗位可以大体分为 Web、移动端、小程序、客户端和游戏前端等类型。

  • Web 前端是前端开发的通用岗位,主要从事浏览器内的网站、中后台、SPA、插件等应用的开发,广义上,它也包含所有基于前端技术开发或者面向用户界面的岗位,传统的美工、搜索引擎优化师、网站推广专员、用户交互和体验设计师在一些公司仍归属于前端部门。
  • 移动端前端是 Web 前端的细分,主要从事 WebApp,基入 WebView 的套壳或 Hybird 混合应用开发,或者采用前端技术开发原生渲染的移动应用,如 React Native,Weex,Hippy 等。经典的 IOS 和 Android 开发也可以归类于移动端前端,基于 Dart 的 Flutter 发展强劲,拥有原生开发能力和经验的前端工程师更受企业的欢迎。
  • 小程序前端是 Web 前端的细分,近年来各超级 APP 分分开放小程序能力,小程序作为流量入口的价值日益显现。很多公司将小程序岗位从前端中独立出来,甚至只做小程序。Uni-App,Taro,Kbone 等小程序跨端,甚至多终端统一框架成为很多项目的选择。
  • 客户端/嵌入式前端历史悠久,从使用 WebBrowser 到集成 Chromium,从填补客户端频繁更新的内容,开发提供离线体验的 Web 应用,到基于 Node.js 等前端技术构建跨平台的桌面应用,如 Electron 等。随着智能设备的快速普及,手表、投屏、教学、电视、车载应用等终端正在产生更多的前端岗位需求。
  • 游戏前端起薪普遍较高,几乎都要求掌握算法和数据结构。作为传统游戏开发的延伸和补充,Cocos 和 Unity 仍是很多游戏前端的加分项。早期网页游戏和视频网站带来了大量的 Flash 相关岗位需求,之后 HTML5 取而代之,Canvas,WebGL,WebGL 2 渲染性能不断提升,岗位可视化 JS 库 Echarts、Hightcharts、D3.js、Three.js 得到图表、地图、游戏类、设计工具等项目的青睐,Laya、Erget 让前端游戏开发更容易,WebAssembly 前景广阔。值得一提的是,小游戏由于其高粘性,易传播的特性,在传统游戏之外,正在成为保证用户增长和留存的手段之一,很多非游戏开发企业,也将游戏前端作为独立岗位招聘。
  • 除了以上分类之外,前端工程师还可以选择的相关岗位有:
    • 与其它技术的复合岗位,如音视频开发,地图位置信息开发,课件开发
    • 需要额外储备业务相关技术的岗位,售前、售后技术支持,云技术开发
    • 技术输出的岗位,如前端培训讲师、主播、顾问、组长等咨询或管理类岗位

需要注意的是,前端岗位并没有清晰界限,使用的技术栈往往根据项目需求和资源变化。每个领域所能提供的岗位是有限的,下面就让我们跳出领域限制,从前端工程师的岗位需求入手,拓展择业的范围,明确学习方向。

岗位要求

我们随机抽取了 60 个当前正在招聘的年薪在 20 万以上的前端岗位,从学历、专业、工作经验、管理经验、性格特质、技术栈和加分项等 7 方面总结前端工程师的岗位要求。

学历

95% 的岗位要求本科及以上学历,5% 的岗位要求大专及以上学历。

专业

22% 的岗位要求计算机或相关专业,11% 岗位不限专业,但要求有算法和数据结构等计算机基础,特别是起薪较高的游戏前端岗位。在力扣刷题和看 Leetbook 是弥补计算机基础的捷径。

工作经验

45% 的岗位要求 5 年及以上工作经验,23% 的岗位要求 3-4 年工作经验,10% 的岗位要求 1-2年工作经验,22% 的岗位不限工作经验。部分岗位虽然标明了工作经验要求,但也注明能力达到,可以放宽要求。

管理经验

少数高级及以上或管理岗位,对管理经验也有要求,多表述为带过不少于多少人团队或者 1 - 3 年管理经验。

性格特质

近三分之一的岗位要求候选人擅于团队协作、学习和沟通。四分之一的岗位要求候选人责任心强。六分之一的岗位要求候选人主动,具备良好的逻辑思维能力,擅于发现、分析和解决问题,能承受一定的压力,十分之一的岗位要求候选人严谨规范。其他常见岗位性格描述包括喜欢分享、乐观、钻研,有一定的视野、执行力和擅于思考。

值得一提的是,近年来,各大公司越来越重视对面试者逻辑思维能力的考察,考察方式包括:

  • 聆听面试者的回答,判断是否有逻辑性
  • 请面试者回忆一个项目的架构或解决某个问题的细节
  • 设置开放性题目,请面试者用简短的语言尽可能多地回答技术点
  • 设置实践问题场景,询问解决问题的流程、方案
  • 设置逻辑推断题目
  • 设置算法和数据结构的题目
  • 设置编程题目,面试者需要在线编程,或者回答解决问题的关键技术点
  • 力扣收集了各大公司的算法、数据结构、逻辑和编程原题,大量练习并参与模拟面试和周赛,带着用更高效的方法解决问题的态度投入工作,能够显著提升面试者的逻辑思维能力。
  • 更重要的而是,逻辑思维还将影响语言表达是否清晰有效,安排学习、工作是否条理有序。刷题经常处理边界,会帮助面试者形成严谨规范的品质。这些都将促成良好学习和工作习惯的养成,使得面试者的性格特质更加满足岗位要求。

技能

我们将岗位要求的技能按照出现频次生成词云图:

  • 几乎所有岗位都提到了 JavaScript、HTML 和 CSS,部分岗位会注明 HTML 5 和 CSS 3,近三分之一的岗位提到了 ES6+,超过 18% 的岗位提到了 TypeScript,超过 10% 的岗位提到了 W3C 标准。近 10% 的岗位在使用 SASS 或 LESS。语义化也被提及。
  • 三大框架中,70% 以上的岗位提到了 Vue 和 React,两者不分伯仲,超过三分之一的岗位提到了 Angular,其受到外资企业的偏爱。React Native 仍是 10% 岗位的选择。Weex、jQuery 也被提及。
  • 近半数岗位要求 Node.js, 无论是作为工程化工具,桌面开发、中后端运行环境,Node.js 已经从加分项变为必修项。
  • 超过 20% 的岗位明确提到数据结构和算法,其与对计算机基础或专业的要求紧密相连,出题考察是证明面试者计算机水平的直接途径之一。设计模式和面向对象也有被提及。
  • 工程化方面,超过三分之一的岗位提到了 Webpack,超过 18% 的岗位提到了 Gulp ,超过 10% 的岗位提到了 Grunt,Rollup,FIS 也有被提及。
  • 近三分之一的岗位提到了网络,超过 23% 的岗位明确提到 HTTP。
  • 超过 28% 的岗位提到了性能优化,近 10% 的岗位要求要求了解浏览器原理,结合计算机基础、网络、缓存、框架、原理等谈性能优化,往往可以拉开中高级前端的差距。
  • 近 10% 的岗位提到了 Git,敏捷开发和文档书写能力也有被提及。
  • 此外,10% 左右的岗位提到了架构、布局、兼容性、小程序、Canvas、组件化和模块化。

加分项

前端技能之外,被多次提及的加分项如图所示:

  • 英语水平:通常分为两个层级,第一级是读写英文文档、邮件,第二级是听说英文会议。
  • 管理经验:在团队中承担过项目或技术管理的角色,培训过其他前端,采用某种开发模式,参与技术选择和架构设计,解决过疑难问题或显著提升开发效率,带来业务增长。
  • 大中型项目的开发经验:服务过高并发,高负载的业务,应用或组织过微服务或复杂系统的开发。
  • 移动端会 IOS 和 Android 原生开发:原生开发通常意味着更小的安装包,更完整的调用能力和更广阔的优化潜能,用户体验对比非原生仍会有细微差别。在移动端业务快速发展或者审核政策变更的情况下,会前端有从 Web 开发转型原生开发的情况。
  • 此外,了解 Linux 及类似系统的常用操作,会用会配置 Nginx 等 Web 服务器,擅长 SEO,能够理解甚至完成 UI,UE 和 UX 设计,拥有技术博客,Github 自己的开源项目 Star 达到一定数量,是知名开源项目的贡献者或者维护者都是重要的加分项。

后端及其它语言

后端经验是被提及最多的加分项,掌握至少一门后端、其它客户端或者更底层的语言,一方面可以提高前端的职业竞争力,另一方面可以直接拓宽择业范围。
之前抽取的前端岗位要求中,提及后端或其它语言的频次所占比例如图所示:

学习路线

按照前端岗位需求,以优先学习工作更需要,面试更常考的内容为原则,由浅入深,层层铺垫,与时俱进,可以较容易地总结出前端学习路线图:

HTML / CSS / JavaScript 基础学习

  • 《Web 入门》 MDN 权威入门指南,HTML / CSS / JavaScript 快速上手
  • 《CSS 世界》 讲解细腻,拓展延伸对 CSS 的认识
  • 《现代 JavaScript 教程》 线上教程,简单明了,时效性强
  • 《JavaScript 高级程序设计》 传说中的红宝书
  • 《JavaScript 权威指南》 传说中的犀牛书

jQuery / ES6+ / 正则 / Canvas 进阶学习

  • 《jQuery 中文文档》 翻译完整,结构清晰
  • 《ES6 入门教程》 线上教程,很多前端学习 ES6 的起点和字典
  • 《正则表达式 30 分钟入门教程》 30 分钟从入门到掌握正则的使用
  • 《Web 前端开发精品课 HTML5 Canvas 开发详解》图文并茂,代码示例丰富
  • 《前端通关手册:JavaScript》 大量面试真题检测 JavaScript 掌握水平

工程化及框架应用学习

  • 《Node.js 中文文档》
  • 《Webpack 中文文档》
  • 《Vue.js 中文文档》 Vue / React / Angular 新手建议顺序阅读
  • 《React 中文文档》
  • 《Angular 中文文档》

网络学习

  • 《计算机网络面试突击》 从面试出发学习计算机网络和协议相关知识
  • 《图解 HTTP》 172 张图解轻松入门。从基础知识到最新动向,一本书掌握 HTTP 协议

算法和数据结构及设计模式学习

  • 《我的第一本算法书》 481 张步骤图详解 26 个算法和 7 个数据结构的基本原理
  • 《七章刷完数据结构》 学透方法,高效掌握数据结构
  • 《算法图解》 像小说一样有趣的算法入门书
  • 《零起步学算法》 以初学者视角,重点讲解算法与数据结构的设计思想
  • 《高频算法实战》 进阶版算法与数据结构教程,追踪原理,融会贯通
  • 《深入浅出设计模式》 用生动的例子详解 23 种设计模式

性能优化

  • 《Web 性能》 MDN 权威文档罗列 Web 性能指标和测量方法
  • 《高性能网站建设指南》 堪称前端工程师技能精髓,很多前端的性能优化入门书
  • 《高性能网站建设进阶指南》 进一步学习性能优化,建设指南的进阶版
  • 《高性能 JavaScript》 编写运行更快的 JavaScript 权威指南

原理

  • 《深入响应式原理》 Vue.js 权威说明响应式原理
  • 《React 实现说明》 React 实现原理资料汇总

安全

  • 《Web 安全》 MDN 权威文档说明 Web 攻击方式及防御策略
  • 《Web 安全开发指南》详细介绍Web安全开发的必备知识和攻防实战
  • 《XSS Challenges》 模拟 XSS 攻击并闯关

调试和测试

  • 《调试器》 MDN 权威文档说明如何使用 JavaScript Debugge
  • 《Jest中文文档》 被广泛使用的测试框架的说明文档

项目管理

  • 《Markdown 入门》 用轻量级的标记语言快速书写格式优雅的文档
  • 《面向对象是怎样工作的》 「计算机程序设计思想」图解趣味版
  • 《OKR 工作法》 如何激励不同团队一起工作,全力以赴实现一个有挑战性的目标
  • 《敏捷软件开发》 豆瓣评分 9.0 的项目管理入门书

加分项

后端和客户端或更底层语言

  • 《Java 实战》 通过示例全面讲解 Java 8、9、10 新特性
  • 《Python 深度学习》 通俗易懂,建立关于机器学习和深度学习核心思想的直觉
  • 《Java 面试突击》 Java 面试必备知识点整理,高效面试通关秘籍
  • 《C++ 面试突击》 C++ 面试高频知识点详解
  • 《WebAssembly 中文文档》 将 C、C++ 或 Rust 等编译进浏览器,在 JavaScript 中使用

操作系统

  • 《硬核 Linux 攻略》 从使用 Linux 写命令,到了解这些指令背后的意义
  • 《硬核操作系统指南》 进程线程、内存管理、文件系统、IO 流、死锁等角度全面剖析系统

机器学习

  • 《机器学习 101》 机器学习的基本概念

SEO

  • 《百度搜索学堂·搜索规范》 百度官方 SEO 教学

UX

  • 《点石成金》 面向 Web 设计和开发的技术人员的经典入门书
  • 《设计师要懂心理学》 在网页和应用设计中,考虑周边视觉、色盲和目标趋近效应
  • 《眼动追踪 用户体验优化操作指南》 通过眼动追踪方法实操用户体验优化

如何准备前端面试

如何积累前端经验

前端的知识更新速度就像它的发展一样快,选择前端,意味着需要不断学习,良好的自学能力和习惯,也许并不能使你飞到最高,但一定能让你飞得更远更长久。
经验积累是一个长期的过程,加快过程的方法有二:

  • 主业之余,投入时间关注,学习和实践新旧技术
    • 每天做完力扣的每日一题,保持清晰的逻辑思维能力以及做题的手感。
    • 每周看完一本 LeetBook,用最少几小时的时间学会一个前端岗位需求技能。
  • 主动发现、分析和解决项目问题,在过程中获得与项目关联的知识和经验增长。

两种方法没有优劣之分,但是需要注意的是:

  • 前者应警惕虚假努力,不要疲劳战以至于影响主业,多以学会多少而不是时间长短来衡量收获,适当给自己放松、减压。
  • 后者能让自己从学业或工作中收获更多经验,但要注意时间、协作和优先级,时刻注意截止日期,不要过早优化,不要占用同学或同事的时间陪自己搜索和试验。提前调查,给出原因、结论和方案供大家讨论,是对团队的时间和效率负责任的表现。

此外,勇于承担管理或者培训的角色,能够让我们从新的角度来看待前端工作。并不是所有人都具有领导力,但是如果公司或团队有意提供这样的角色,请无需担心技术不够,技术、管理、协作等都是前端岗位的需求点,它们部分重叠又相互独立,主动迈出第一步就是成功的一半。不在管理岗位也可以练习管理,小到管理时间、金钱,大到尝试影响和说服他人,尝试优化项目,改进流程等。多尝试做原来领导会做的事情,在这个过程中,锻炼和认识自己,积累管理经验。

也许项目的代码正让你头疼,也许公司的管理正让你委屈,也许重复的生活正让你迷茫,也许长期的重担正让你厌倦,也许身心的疲惫正让你失望。很抱歉,曾经喜欢前端的你,有时会遭遇非技术的压力。请尝试拾起好奇心和热情,主动“优化”环境、生活和人际关系,在忍受和思考中发现“原理”,找到并复制更优“模式”,在“实现”最佳实践中,完成量变到质变的积累。

综上,可以很容易地把如何积累前端经验总结成脑图:

如何应对前端面试

首先,明确寻找工作的动机、目标,如果已经在职,需要权衡离职带来的风险和收益,尽量不要裸辞准备面试,原因是:

  • 背景调查的流程和时间可能会延长。裸辞有的公司会先背调,再入职,在职为避免立即联系候选人在职的公司,可能会先给 Offer,再背调。这不是一定的,只是具有参考意义。
  • 需要提供的证明可能会变多。比如有的公司会要求裸辞候选人提供工资流水、社保记录。
  • 离职原因很可能会成为面试关注的重点之一。是不是被动离职,为什么要冒中断社保、经济来源的风险?
  • 社保、经济来源可能中断、生活节奏不适应、求职不顺利、社交需求等长期可能会给候选人产生压力。

其次,一定要先准备,再去面试,缺少准备,会导致:

  • 理论知识遗忘,不准确,回答问题或者交流项目,答不到技术点和得分关键词上;
  • 算法和数据结构、编程题不会做,不会说,或者有印象,写不出;
  • 原理及实现答不出,或者答得太浅,只知道怎么用;
  • 回答受限于项目和技术栈,缺少广度和深度,岗位要求的某领域遗忘或没接触过;
  • 想到哪里说到哪里,回答没有逻辑,不连贯,缺少联系、一致和条理性。

部分面试官能够辨别候选人的不佳表现是因为紧张、缺乏准备所致,少数面试官会尝试通过引导、鼓励、开玩笑、更换环境、变换候选人熟悉的话题等方式来继续探测候选人的真实能力边界。即便如此,含糊不清、缺少技术表述,逻辑混乱的答案依然会负面影响面试结果。

紧张是很多候选人都有的情绪。在回答不上来或者面试官给予了负面反馈时,例如被频繁打断、质疑,部分候选人会焦虑,头脑空白。也有候选人不适应在别人的关注下做题,不善于表达。

所以,在准备面试时,我们可以根据前端学习路线、心仪岗位要求、结合自身实际,搭建自己的技术栈框架,回答 《前端通关手册》 、《面试突击》 系列的 LeetBook 里,已经按知识点分好类的面试题,将查漏补缺到的知识点,按分类挂载到自己的技术栈框架上。面试时,在框架中搜索,总能找到可以回答的内容,至少可以避免无话可说,回答也会尽可能地靠近正确答案。

对于害怕线上编程的候选人,推荐使用力扣的模拟面试功能,从大厂原题中抽取题目,模拟真实面试流程和情景。可以让我们更好地控制时间和情绪,提升面试中对不通过情况的调试和处理能力。最好可以边做边说,讲讲思路、复杂度,用到的数据结构、算法和技术点等。习惯后,真实面试只是换了题目和听众,自然会更从容。

最后,临场表现可以大方有礼,重视细节,但是不纠结于结果:

  • 面试前:打印多份简历,着装勿太休闲,口、身上无气味,早 30 分钟到,赶时间不要拼车;
  • 面试中:语速不要快,声音大,突出技术关键词,多看面试官,不会的跳过,不要卡在上面;
  • 面试后:感谢面试官并握手,不评论公司和他人,心仪岗位 3 天后,可以主动询问结果。

综上,可以很容易地把如何应对前端面试总结成脑图(点击放大):

前端面试流程形式

当与公司约定好了面试时间,建议候选人至少提前 30 分钟到达现场,原因是:

  • 有的公司会要求填写候选人到场填写个人信息或者职位申请表,需要时间;
  • 有的公司有多轮面试,面试官时间安排紧凑,提前到,有机会一次性面完;
  • 有的公司地图标注不准确或者没沟通好,来错地方,需要有时间打车更正。

前端面试流程,根据公司属性,通常分为三种情况:

  • 国内公司,多先技术面,再人力面,部分公司喜欢在技术面前添加笔试题或机试题。

    • 机试题通常时间够用,笔试题可以只写技术点,未约定时间时,控制在 30 分钟完成。
    • 技术面的一面往往是你未来的同事、组长或者直属领导。
    • 二面及以上通常是更高一级的领导或者别的部门的同事交叉面试。
    • 技术面通常会评级,有的公司会设置专门的技术评定考试,结果影响职级和薪资区间。
    • 人力面通常会关注候选人的离职原因,职业规划,向候选人核实简历中发现的问题。

      • 通常,当 HR 开始向你介绍公司文化、询问你当前薪资和期望薪资、最快入职时间,都是代表面试可能已经当场通过。
      • 如果期望薪资超过了评级、涨幅超过 HR 权限等,能力和经历经询问依然存疑,或者需要继续与其他候选人对比,那么通常会给候选人等待的时间范围。
      • 多数公司的谈薪是一个独立流程,HR 会向候选人详细介绍薪酬、奖金、福利、晋升路线和通道,有时也希望降低候选人的期望,来达成录用。
  • 外资公司,多先人力面,再技术面,最后人力面。比国内公司多的第一场人力面,主要采用电话或现场简单聊天的方式,对候选人进行初步了解。这个阶段 HR 的问题,很可能会包含最核心的岗位要求,例如某个不可或缺的技术栈、相关领域经验,稳定性要求等。

  • 部分公司,多为大厂,候选人会接到技术电话面,这是初步了解,解答面试官关键疑问的途径,具有初筛意义。通常,电话面及其它前置考核通过后,才会进入到公司的面试流程。所以,接到电话不必紧张,如果不方便,一定要在电话中另行约定时间,避免错过机会。

面试,主要是语言沟通,对表达能力不太自信的候选人,可以准备纸笔或电脑,在征得面试官同意的前提下,用你的架构图、时序图、流程图、代码、文档和项目来补充回答,可以给面试官留下更完整的印象,尽可能地多展现真实水平。

小结

界面是产品距离用户最近的窗口,选择前端,让我们有机会直面用户,从需求出发,在技术开发中,体验人性之美,更快、更好、更低成本地创造商业价值。

多平台,跨终端,Serverless 的趋势下,从事前端,无需自我设限,面对挫折和挑战,用理智对抗情绪,选择成长,任何人都无法阻止你成为领域专家或全栈大牛。

在准备面试和积累经验的道路上,指导和氛围的重要性不言而喻。多年来,力扣已经帮助很多前端实现职业发展,获得自己心仪的岗位 Offer。面试真题和 LeetBook 等同于考前模拟和划重点,让我们可以有针对性地高效准备面试,提升学习、思维能力并养成思考的习惯。

最重要的是,这里有一群和你一样,心怀理想,勇于挑战的人,彼此分享面试经历、解题思路,与你一同披荆斩棘,在前端的学习和工作中,成就更好的自己。
加油,很期待通往前端未来的路上,与你同行!

最新高频面试题

leetcode 88. 合并两个有序数组
leetcode 415. 字符串相加
leetcode 129. 求根到叶子节点数字之和
leetcode 112. 路径总和
leetcode 104. 二叉树的最大深度
leetcode 46. 全排列

算法岗工程师

根据 Talent Seer 2020 AI 人才报告显示,全球 AI 从业者总人数约有 30 万,还是供不应求,其中 AI 技术专家(具有相关领域博士学位及 3 年以上工作经验的)约有 3.65 万。

对于计算机专业的毕业生而言,算法岗基本上就是 「高薪」 的代名词。

在当今 IT 行业,算法工程师相比于开发工程师,技术要求会更高,当然工作难度也更大。大家可能会觉得:如果我没有名校光环,没有顶会论文,是不是根本不可能在算法岗的 PK 中脱颖而出?

对于这样的疑问,我们希望能够为大家树立一点信心:名校光环/顶会论文不是顶级 offer 的充要条件,普通高校毕业却能拿到 SSP 的也大有人在。是否应试成功的关键,还是在于其本身的能力是否过关,以及与应聘岗位的需求是否 match。

下面就请大家跟随我们的脚步解读算法岗要求,锚定心仪岗位,明确备战方向!

算法岗是什么

算法岗是大中型企业在已经有完整的盈利闭环系统的基础上,需要对其盈利模式进行深度的优化,使得系统可以更加具有针对性的服务用户目的的工程人员。

算法岗分类

从工作类别上看,算法岗可划分为 算法研究员 & 算法工程师。

  • 算法研究员:
    算法研究员的 hc 相对较少,一般仅仅在特大厂的 AI lab、AI 四小龙以及独角兽的公司会有一定的需求。当然这仅仅是针对互联网公司的情况进行描述的,如果是进入国企或者研究所,对前沿的技术研究需求还是很多的。

  • 算法工程师:
    算法工程师相对研究员来说,更加接近实际的业务,将算法实际运用到工程中,从而发挥算法的效果。一般来说在实际的业务生产中,我们所使用的算法模型也都是稳定的模型,进行迁移学习,从而可以达到速度与准确率的完美结合。

算法岗细分方向及应用领域

从应用领域上看,算法岗位能做进一步细分。

通过梳理大厂岗位 JD,将算法岗招聘中最常见的 职位名称 汇总如下:

  • 算法工程师(机器学习大类)
  • NLP(自然语言处理)算法工程师
  • CV(计算机视觉)算法工程师
  • CG(计算机图形学)算法工程师
  • 推荐算法工程师
  • 数据挖掘工程师

算法岗要求

学历要求

观察其中的 Top10 学历要求,整体上具有强烈的“对称性”:从学历层次上大体分为本科和硕士两类门槛;从年限要求上大体可以分为:在校/应届、经验不限、1-3年、3-5年、5-10年这五档(注意:在校/应届和经验不限两个条目是不一样的,前者意味着只招应届生,社招是没机会的,而后者则意味着校招和社招都可以)。同时,对不同工作年限的要求上,本科和硕士也几乎具有对等性,所以似乎可以说明算法岗其实对学历要求也没有那么挑剔,但不同学历要求的薪资则一定有所差距。

技术能力要求

从中可以看出,占据词云 C 位的当属 "深度学习算法",其次则是 Python 和 C++ 这两大编程语言,Java 因为字体颜色原因略逊一筹,而 Go、C 和 SQL 三种语言则要仔细寻找方可定位。

深度学习工具方面,则主要是 PyTorch 和 TensorFlow 两大框架,caffe 也依稀可见;算法应用方面,主要可以看到三大关键词:视觉图像算法、自然语言处理、推荐算法,基本上这也代表了算法岗的三个典型应用方向。

如何进行算法岗求职准备

依据算法岗位要求,参照面试高频考点,总结出算法岗学习路线如下:

学习资源推荐

下图为针对算法岗的学习资源推荐,涉及视频、博客、平台三大渠道。

从中挑选出一些普及度高、广受好评的资源做详细介绍:

  • Coursera 视频:吴恩达《Machine Learning》
    这绝对是机器学习入门的首选课程,没有之一!即便你没有扎实的机器学习所需的扎实的概率论、线性代数等数学基础,也能轻松上手这门机器学习入门课,并体会到机器学习的无穷趣味。

  • CS 系列视频:吴恩达 CS229
    吴恩达在斯坦福教授的机器学习课程 CS229 与 吴恩达在 Coursera 上的《Machine Learning》相似,但是有更多的数学要求和公式的推导,难度稍难一些。该课程对机器学习和统计模式识别进行了广泛的介绍。

  • Kaggle 比赛
    比赛是提升自己机器学习实战能力的最有效的方式,首选 Kaggle 比赛。

  • Papers with Code
    这个网站将 ArXiv 上的最新深度学习论文与 GitHub 上的开源代码联系起来。该项目目前包含了 651 个排行榜,1016 个深度学习任务,795 个数据集,以及重磅的 10257 个含复现代码的优秀论文。简直就是一个寻找论文和代码的利器。它将 1016 个深度学习任务分成了 16 大类,涉及了深度学习的各个方面。

相关书目推荐

LeetCode 平台通过与“图灵教育”的深度合作,上线了诸多经久不衰、深受学习者喜爱的品质书籍,其中与算法岗相关的书籍包括:

  • Python 深度学习
    本书详尽展示了用 Python、Keras、TensorFlow 进行深度学习的探索实践,涉及计算机视觉、自然语言处理、生成式模型等应用。在学习完本书后,读者将了解深度学习、机器学习和神经网络的关键概念,具备搭建自己的深度学习环境、建立图像识别模型、生成图像和文字等能力,学会解决现实世界中的深度学习问题。

  • Python 深度学习入门:从零构建 CNN 和 RNN
    本书全面介绍了深度学习知识,借助数学公式、示意图和代码,旨在帮助读者从数学层面、概念层面和应用层面理解神经网络。读者可以跟随本书构建和训练神经网络模型,从而解决实际问题。另外,本书着重介绍卷积神经网络和循环神经网络,并提供 PyTorch 开源神经网络库的使用方法,有助于学习构建更高级的神经网络架构。

  • 白话机器学习算法
    与使用数学语言或计算机编程语言讲解算法的书不同,本书另辟蹊径,用通俗易懂的人类语言以及大量有趣的示例和插图讲解 10 多种前沿的机器学习算法。内容涵盖 k 均值聚类、主成分分析、关联规则、社会网络分析等无监督学习算法,以及回归分析、k 最近邻、支持向量机、决策树、随机森林、神经网络等监督学习算法,并概述强化学习算法的思想。

  • 深度学习进阶:自然语言处理
    《深度学习进阶:自然语言处理》是《深度学习入门:基于 Python 的理论与实现》的续作,围绕自然语言处理和时序数据处理,介绍深度学习中的重要技术,包括 word2vec、RNN、LSTM、GRU、seq2seq 和 Attention 等。本书语言平实,结合大量示意图和 Python 代码,按照“提出问题”“思考解决问题的新方法”“加以改善”的流程,基于深度学习解决自然语言处理相关的各种问题,使读者在此过程中更深入地理解深度学习中的重要技术。

  • 深入浅出神经网络与深度学习
    本书深入讲解神经网络和深度学习技术,侧重于阐释深度学习的核心概念。作者以技术原理为导向,辅以贯穿全书的 MNIST 手写数字识别项目示例,介绍神经网络架构、反向传播算法、过拟合解决方案、卷积神经网络等内容,以及如何利用这些知识改进深度学习项目。学完本书后,读者将能够通过编写 Python 代码来解决复杂的模式识别问题。

如何提高自身竞争力

  1. 自我定位,开发or算法?
    想要找一个好工作的前提是清楚自己要找什么岗位。不乏有一些同学到了校招季还不清楚自己要找开发还是算法,然后两手准备,最后两个都不理想。建议是根据自己的个人兴趣来,或者参考实验室往届师兄师姐,或者结合自己实验室的研究方向。

  2. 重积累,提升理论水平
    想要找算法岗,论文必不可少,需要阅读大量的文献,做各种实验,多跟实验室的同学、师兄师姐讨论。建议大家看论文都有做论文笔记的习惯,并可以对每篇论文做简要的总结,既有利于启发自己的 idea,也有利于自己后面复习。

  3. 理论结合实践,积累项目经验
    首先就是打比赛,有天池比赛,Kaggle 比赛,还有百度每年都会有很多人工智能赛事等。简历上有个较好的比赛名次是很加分的。没参加过比赛的同学可以找实验室师兄师姐带一带,或者和同学组队参加,积累比赛经验,努力拿到一个好的名次。其次就是做项目,如果实验室有项目并参与其中的话,那么就很加分。实习面试基本上成功了一半,毕竟有项目经验的人到公司就可以快速上手,节约人力成本。

  4. 提前关注,早做准备
    首先就是提早准备面试资料,这些资料一半是自己平时 科研积累下来的,需要自己总结归纳,方便向面试官介绍;另一半则是一些常见的算法八股文和面经,可以从 LeetCode、CSDN 上搜集并记录下来,整理成自己能理解的方式,不断记忆。另外就是早点投简历,因为算法岗位 hc 偏少,先到先得。要在每一次面试中积累经验,并查缺补漏。越早做好准备,越早抢占先机。

直击算法岗面试

想要更好地备战算法岗面试?大厂 模拟题集 与各类 专项突破 帮助大家多角度洞悉企业面试考察重点,梳理知识漏洞,提前高效准备:

最新高频面试题

leetcode 90. 子集 II
leetcode 49. 字母异位词分组
leetcode 1584. 连接所有点的最小费用
leetcode 24. 两两交换链表中的节点
leetcode 310. 最小高度树
leetcode 787. K 站中转内最便宜的航班
leetcode 146. LRU 缓存
leetcode 11. 盛最多水的容器
leetcode 139. 单词拆分
leetcode 134. 加油站

测试工程师

随着互联网行业的高速发展,快速高质量的产品版本迭代成为企业始终立于不败之地的迫切需求,而在短期迭代的快节奏中,传统测试工作面对更大压力,无法持续提供高效率高质量的人力支撑,所以越来越多的企业需要技术更为全面的测试开发工程师。测试开发 本质上属于测试,区别在于需要依靠更多的技术手段作为辅助,在提高测试工作效率的同时保证产品质量。与测试相比,测试开发会将测试任务提前,不用非等到开发全部结束之后再测试,极大提高了测试速度和质量,另外测试开发还需要完成将测试自动化的任务,通过开发维护测试工具、搭建自动化测试平台等手段,提高测试效率,减少人力成本。

笔者将结合自己的求职经验,从下面几个方面介绍测试开发岗位,希望对大家面试测试开发岗有所帮助。

招聘分析

测试分为:客户端测试,服务器端测试,安全测试,性能测试,功能测试,自动化测试,测试开发等。

不同测试岗工作内容

客户端测试

是指对用户可以看到的内容进行测试,比如包含界面的网页端、PC 端、移动端等,一般是在用户的机器上去做。

测试内容包括:安装测试、卸载测试、用户界面测试、功能测试、字符输入测试、提示信息测试、超链接测试、操作按钮测试、菜单测试、视频音频测试、程序运行权限测试等。

服务端测试

有两种:一种是直接对 WEB 或者 APP 的服务端进行测试;另一种是对更后端的数据库、缓存系统、中间件、文件系统等进行测试。

测试内容包括:代码检查、接口测试、结合业务的模块测试和场景测试、压力测试、服务端最优配置测试等。

安全测试

是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程,主要查找软件自身程序设计中的安全隐患。

测试内容包括:缓冲区溢出、SQL 注入、跨站脚本攻击、跨站请求伪造、SSL 协议攻击等。

性能测试

是为了保证产品发布后其性能能够满足用户的需求,对指定的软件产品进行功能性的检测和验证,确保这些功能都得以实现并能正常运行。

测试内容包括:基准测试、日常压力测试、峰值压力测试、容量测试、稳定性测试等。

功能测试

主要采用黑盒测试方法,结合测试内容对功能进行测试,同时在测试过程中对用户需求、设计文档和使用手册进行检查。

测试方法主要根据测试对象的不同灵活进行选择。功能测试是对应聘人员要求最低的一种,一般只需点点点找出产品的 bug,不需要很高的技术含量,这同时也导致测试人员的可替代性很高,发展空间已经接近天花板,所以需要掌握其他方向的测试内容。

自动化测试

是借助于测试工具、测试规范,从而局部或全部代替人工进行测试及提高测试效率的过程。它的主要进步之处在于自动测试工具的引入,包括对各种测试内容的管理和实施、测试脚本的开发与执行等,对于编程能力的要求更高一些。

下表中是各大厂对测试开发工作内容的说明,可以看出,测试开发 应该具备自动化测试技术,但不局限于此,也应该具备平台和工具的开发能力,整体要求较高。工作内容主要包括:

  • 一是测试工具、测试平台的开发,服务于测试相关的业务,与开发公司其他产品业务很类似;
  • 二是自动化测试开发,主要开发自动化测试脚本,比如 UI 自动化测试、接口自动化测试、单元测试等等;
  • 三是一般性测试脚本的开发,避免单一冗余的工作,提高效率,比如生成测试数据、抓取页面数据进行对比等等。

市场需求及薪资待遇

某招聘官网上搜索测试开发的市场需求量,仅仅北京就有 1.8w 以上,性能测试和自动化测试次之,为 6k 左右;根据某招聘网站的统计,北京测试开发的平均月薪达到 18k 以上,远远高于其他测试岗位,且有一半以上年薪大于 20w。

不仅需求量大,薪资高,而且很多名企也争相招聘。

招聘要求

各厂对校招测试开发岗位的招聘要求比较一致,笔者将用腾讯、阿里和网易的招聘要求来举例说明,并总结出通用要求。

学历和经验要求

测试开发岗对学历的要求一般在本科及以上,与其他技术职位相比,入行门槛并不高。

一至两种编程语言

测试开发岗对编程能力要求较高,市场上很多测开工程师都具备优秀的开发能力,代码基础特别扎实,甚至有些做过一两年开发,所以建议熟练掌握一到两种编程语言。
刚入门的小伙伴也许会觉得掌握几种编程语言很难,但只要培养起自己的编程思维,再学会其他语言就水到渠成,因为编程语言都是用来表达编程思维的工具,就像写作之前列提纲打草稿一样,编程思维顺畅之后,对编程语言的掌握会在不断地练习中越来越好。

计算机基础知识

测试岗的笔试面试中会出现对数据结构与算法、数据库、计算机网络、操作系统等基础知识的考察。想要在工作中快速上手,并且有更好的职业发展的话,必须牢牢掌握这些基础知识。如果能在面试中和面试官对答如流,将极大增强面试通过的概率。

软件测试理论与方法

软件测试理论与方法是所有测试岗的必备,主要包括:
软件生命周期,测试用例编写方法,软件测试原则;软件测试管理相关技术,软件各个阶段评审,软件测试计划编写,软件测试过程管理,软件验收,软件测试整个过程一些文档规范等。这部分内容与上文提到的计算机基础知识相比难度小很多,学习起来也会很快。

求职准备

技能学习路线

编程语言学习

目前热度很高的编程语言有 Java,C/C++,PHP,Python,Go 等,虽然看起来眼花缭乱无从下手,但是要记住编程语言只是一种工具,不管什么语言只要能熟练掌握,快速高效地解决问题就可以了。

计算机基础知识

数据结构与算法

书籍推荐

  • 适合入门:《大话数据结构》、《算法图解》;
  • 算法进阶:《算法》(第四版)、《算法导论》,理论性更强。

刷算法题

除了理论的学习,更重要的是一定要多在力扣刷题,太久不刷题的话会手生,非常影响笔试面试的发挥。

力扣题库 页目前已全新改版,题型、知识点、分类标签都进行了优化调整;
企业真题题库 帮助大家全面掌握技术面试考点;

刷题新手建议从 剑指 Offer 模块起步,题目比较基础,面试中出现频率也很高,时间充裕的话建议刷两到三遍。

数据库

数据库的学习笔者推荐 《MySQL 必知必会》、《深入浅出 MySQL》 两本书。常用的增删改查操作、索引、索引背后实现原理、查询如何加速、事务隔离级别、内连接外连接等等,都是常见的面试题。

力扣上也有 数据库 模块的题,题目难度和真实笔试面试中写 SQL 的难度相一致,笔者当时刷了一半,求职过程中拿下了所有的数据库题目,强烈推荐!

计算机网络

推荐谢希仁的 《计算机网络》 ,是很多大学推荐的教材
《计算机网络:自顶向下》,很适合入门级使用
视频可以看韩立刚老师的讲解,通俗易懂,好评很多。

操作系统

偏向于概念和理论讲解推荐:《现代操作系统》、《操作系统概念》;
具体实现推荐:《30天自制操作系统》,帮助更好地理解理论知识。

软件测试理论

  • 经典入门书籍推荐:《计算机软件测试》,全面系统地介绍了软件测试理论及相关技术。
  • 《软件测试的艺术》:涵盖了很多软件测试的领域,列举很多模型、方法和工具,实用性很强。

测试项目或实习
了解测试岗的工作内容最有效的办法就是直接去公司实习,但如果没有时间实习的话,小伙伴们可以找一些测试项目练习:

  • 比如结合 Selenium 学习 Web 自动化测试。通过脚本编写,有助于提高语言基础知识的理解和运用,并进行大量练习。如果用 Selenium 自动化脚本开发,起码要完成 100 个自动化测试用例,对 seleinum 达到熟练使用的地步,才能快速写出自动化测试用例。接下来可以结合 Java 中 Junit 或者 testNG, Python 中 unittest,继续深入研究 Selenium 和一些自动化测试框架的知识。
  • 然后还可以设计自己的测试框架,比如 Python+Selenium 设计自动化测试框架。网上的这类开源项目资源很多。重点是一定要把项目的细节全部搞清楚,尽量往深钻研,理清楚自己的想法。

时间规划建议

编程语言学习、数据结构和算法:2 个月理论学习 + 经常刷题

这部分内容要具有连贯性的学习,编程语言基础学差不多了要学习数据结构和算法的理论知识,并且理论一定要结合刷题来巩固,才能更快上手、熟能生巧。刷题的话刚入门可能比较慢,就算一天一两道题也没关系,一定要坚持下来,慢慢就能看到成果。想去大厂的话就使劲刷,一般三四百道起步。

数据库、数据库刷题:15 天理论学习 + 经常刷题

数据库知识相比难度不高,入门书籍很快就可以看完,同样需要经常刷题,巩固知识点提高速度。

计算机网络、操作系统、软件测试理论:2 个月

这部分可能比较枯燥,可以在看书时结合课后题或者笔试题面试题来随时检验复习。力扣网站上也有很多相关 LeetBook,可以搭配学习~

项目或实习:3 个月

做项目可以不用强求难度,但一定要确保自己学懂了每个细节,项目中遇到了什么问题,该怎样解决,效果怎么样,有没有其他方案,不同方案的区别在哪,这些常见的项目问题要在面试前提前准备好。

常见面试题举例

:界面搜索框测试用例
:可以从功能测试、界面测试、安全性测试、兼容性测试、性能测试、易用性测试等角度进行回答。如:

  • 功能测试
    • 搜索内容为空如何处理
    • 在允许的字符串长度内外如何处理
    • 合法的字符串长度后,加空格验证结果
    • 验证每种合法的输入,结果是否正确
    • 是否支持检索内容的复制、粘贴、编辑等操作
    • 是否支持回车键搜索
    • 多次输入相同的内容,查看系统的检索结果是否一致
    • 搜索的历史纪录是否显示在下面
    • 点击搜索,显示搜索界面
  • 界面测试
    • 查看 UI 是否显示正确,布局是否合理
    • 是否有错别字
    • 搜索结果显示的布局是否美观
  • 安全性测试
    • 脚本的禁用
    • SQL 的注入,检索 SQL SELECT 语句等
    • 敏感内容的检索是禁止的
  • 兼容性测试
    • 多平台 Windows,macOS
    • 移动平台 Android,iOS
    • 多浏览器 火狐、Chrome、IE 等
    • 分辨率,操作系统版本兼容等等
  • 性能测试
    • 搜索页面的链接打开速度的时间
    • 搜索出结果消耗时间
    • 弱网时搜索的响应时间
    • 不同网速下搜索时的响应时间 3G,4G,WiFi
  • 易用性
    • 有联想功能
    • 搜索内容与搜索结果的匹配程度
    • 支持拍照搜索,语音搜索

另外还有其他场景,比如发红包测试用例、用户登录测试用例、输入法测试用例、支付功能测试用例等等,都可以按照以上角度来回答。回答的时候要注意逻辑,越细致越好。

发展前景

测试开发的发展方向可以分为以下几个大方向:

  • 一是技术专家的道路,这条路比较坎坷,但也比较踏实。如果不太善于人际关系交往,不擅长管理,或者对技术有浓厚兴趣,建议在技术道路上多做耕耘。测试开发这条路根据从业者学识、经验的积累,会一路从初级上升到中级,再到高级,再到测试开发专家。

  • 二是管理方向。这条路并不会比技术方向轻松,因为要做好各方面的协调、统筹和管理工作,同时还要提升自己的技术,来锻炼自己落地一些团队方案的能力,也更能服众。虽然说管理的「生命周期」比纯技术会长一些,但是一定不能放弃技术。

  • 三是转岗到其他方向,比如研发、运维、产品经理等。这些都属于新出路,建议不要因为头脑发热选择转岗,因为面临新行业新环境依然需要从头学起,没有恒心和耐心很容易受挫,并且容易浪费时间。如果自身有了一些积淀,比如主流的技术栈或者业务知识很熟练,那么尝试新事物也未尝不可。

本文对测试开发岗位的招聘分析、求职准备、发展前景做了系统介绍,希望对想要求职测试开发岗位的同学有所帮助。

最新高频面试题

leetcode 3. 无重复字符的最长子串
leetcode 1. 两数之和
leetcode 20. 有效的括号
leetcode 169. 多数元素
leetcode 141. 环形链表
leetcode 142. 环形链表 II
leetcode 136. 只出现一次的数字
leetcode 232. 用栈实现队列

移动端工程师

目前流行的移动端开发包括 安卓开发 和 iOS 开发,扩展的有 移动端混合开发。安卓开发和 iOS 开发统称为 移动客户端 开发。不同平台使用的开发语言不同,开发工具自然也不一样,安卓使用的 Java 语言,iOS 使用的 objective-C。所以倘若你有学习移动开发的意向,首先要确定平台,然后进行相对应的语言和开发工具学习。其他的就是软件开发专业的其他知识了,如软件工程、操作系统、数据结构等知识。

本文以安卓开发为例,介绍其招聘需求,以及提供较为详细的学习路线建议。

安卓开发

安卓开发包括但不限于移动手机端上操作系统、游戏、sdk 和各种 app 开发。大部分使用手机为媒介和用户沟通的公司均设有安卓开发岗位,特别是互联网大厂和手机公司。

本文将介绍安卓开发岗的校招现状和校招要求,帮助校招生尽快了解该岗位。同时,文中例举了一些要点帮助大家判断自己适不适合安卓开发岗位,并结合自身情况选择岗位方向。

最后,介绍了安卓开发岗位的学习路线。学习路线主要适用于投递 安卓开发岗位 的校招生,其中项目、算法、计算机基础和语言基础同样适用于其他岗位的校招生和部分社招生。

校招现状

近两年,因为部分公司移动开发需求剧增、跨平台技术推广和客户端经历低谷期,安卓开发岗在部分公司产生招聘缺口,从而接受 零基础(专指没有移动开发基础)的校招生,综合岗位竞争压力、薪资范围等因素,安卓开发岗也受到不少应届生的青睐。

岗位竞争压力

多数大公司的安卓开发岗的竞争压力相对于后端开发、算法工程师等热门岗位而言会小一些。

薪资范围

一般情况下,大公司的 开发岗位(后端开发、前端开发、客户端开发和测试开发等)给的 薪酬范围相同,但会根据某些评定标准给校招生开出不同的薪资,比如 sp(special offer)、ssp offer 等。

招聘需求

总体而言,大公司的安卓开发岗招聘需求比小公司的安卓开发岗招聘需求更旺盛;

校招生要求

每个公司的不同事业部均有自己的移动开发策略,会招聘符合自己要求的校招生,但移动开发校招要求不一致。以下是 部分互联网大厂倾向于招聘的安卓开发校招生类型:

因为不同公司对不同类型的校招生的期待值不同,所以问的问题也会存在差异:

近两年,某些公司的部分事业部的安卓开发校招面试中存在 对零基础的人比较友好,对有一定安卓开发基础的人 比较严格 的现象。上述的三种校招生类型,面试难度可能呈 指数型增加,但相对而言,有一定安卓开发基础且能通过面试的人,最后拿的 薪资通常不低。

而某些公司的部分事业部的客户端开发岗位(包括安卓开发和 ios 开发)会从服务端(后端)开发岗位捞人。鉴于部分应届生可能不太了解客户端开发岗位,这里简单科普下 客户端开发和服务端开发的主要区别:客户端开发直接与用户使用相关,服务端开发提供的服务是交付给客户端或者前端的。

校招要求

各个公司倾向于招聘的校招生不完全相同,作为求职者而言,提前搜集各公司的招聘时间和招聘要求尤为重要。信息采集渠道包括但不限于:

  • 各大公司招聘网站/公众号(几乎所有大厂都有用于招聘的公众号,直接搜公司名字 + 招聘即可)
  • 专门为校招生汇总各大公司招聘信息的公众号
  • 师兄师姐老师同学内推
  • 力扣讨论区等信息交流平台
  • 职场匿名社交网站

互联网大厂均有不同事业部,对应的城市也不尽相同。在校招生招聘过程中,不同渠道的投递方式可能有不同的招聘形势,主要分为 部门直推、常规内推和网络申请 三种方式,其中部门直推可以明确知道事业部,常规内推和网络申请可能是面试过程才知道事业部。有些公司在入职前均不分事业部,即将入职前才告知求职者具体的事业部,而有些公司按事业部进行投递。不同事业部每年招聘的人数也不尽相同,俗称 hc(head count) 不同,同一家公司可能存在不同城市的报录比相差较大的情况。

以下列举 部分大厂安卓开发的岗位名称和城市:

其中部分公司使用混合开发技术,所以不单独设立安卓开发岗位,而是设立客户端开发岗位,面试要求和面试内容与安卓开发有较多重叠,想投安卓开发岗位的校招生亦可投递客户端开发岗位。图中列举的城市 并非 每年都会招聘安卓开发岗位的校招生,有些大厂还有一些独立于母公司的子公司,这些子公司的招聘可能会合并在母公司中,也可能单独放出招聘链接,建议投递者提前了解相关资讯,以免误投错失机会。

各个公司的安卓开发策略和公司技术栈不完全相同,对校招生的要求也不同,以下结合美团安卓开发工程师和拼多多客户端研发工程师的要求,剖析公司更倾向于招聘的校招生类型。

美团安卓开发工程师的岗位要求源于美团校园招聘官网,以下是完整 JD:

美团安卓开发工程师的岗位基本要求和优先条件如下图所示:

拼多多客户端研发工程师的岗位要求源于拼多多招聘官网,以下是完整 JD:

拼多多客户端研发工程师的岗位基本要求和优先条件如下图所示:

总结这两个真实 JD,我们可以发现一些公司的明确要求:
基本要求:

  • 具有 扎实的计算机基础,包括但不限于数据结构、算法、操作系统、计算机网络、数据库、java 和安卓。
  • 本科以上学历,如果投递人数较多,可能会根据学历进行简历筛选,也可能会将校招候选者用学历和面评进行排序后筛选。如果简历上的项目和实践经验特别优秀,学历条件会放宽。
  • 综合素质较强,包括但不限于较好的学习能力、责任心、自我驱动力、逻辑分析能力、沟通能力和团队合作精神。

优先条件:

  • 有实际的客户端 项目经验,最好是有实际用途或者有意义的项目。
  • 懂得 混合前端开发技术/跨平台开发技术,对当前业内最新开发技术有独特见解。

各个公司选择安卓开发校招生都有自己的偏好,例如某些公司的事业部更倾向于招聘具有移动端开发经验的校招生,如果没有相关经验,在可选人才较多的情况下,被录用的可能性会降低。某些公司的事业部虽然也喜欢有基础的校招生,但是可以接受零客户端开发基础的校招生,前提是该生的计算机基础和综合素质较强。某些公司的事业部会明确将零客户端基础写在任职要求上,这些岗位对零客户端开发基础的校招生比较友好,倾向于考核算法和计算机基础。

如何判断是否适合安卓岗

每个人在做职位选择的时候都有自己的偏好,建议校招生在判断自己适不适合安卓开发岗位之前,先明确一下自己选工作更在意哪方面的因素,具体考虑因素推荐看 2021届毕业生秋招经验总结2-如何选择offer 中的选工作的考虑因素一节。判断自己是否适合安卓岗的主要考虑因素,包括但不限于(其他岗位同理):

薪资
安卓开发岗位在大部分大厂中与其他所有开发岗位拥有同样的薪酬范围。但是不同等级(俗称白菜、sp 和 ssp 等)的薪资不同,主要取决于面评、学历和能力等因素。此外,有些公司近两年出现客户端招聘缺口,会以签字费/入职奖金作为优待条件吸引校招生投递该岗位。

目标城市
安卓开发岗位在大城市和互联网发展较好的城市中有较多招聘需求,因为其中包含较多对 APP 开发和维护需求量大的公司。某些对 APP 开发和维护需求较小的公司不单独招聘安卓开发岗位,但会招聘全栈工程师(可以实现前后客户端打通的程序员),或者让后端工程师肩负小型 APP 开发和维护工作。对目标城市有要求的校招生,建议先搜索一下自己的目标城市是否有招聘安卓开发岗位的公司,再决定是否投递该岗位。

业务技术栈
安卓开发岗位的工作内容 「因地制宜」,使用的业务技术栈存在明显差异。只与 UI 设计有关的业务,就业面广,但是被替代的可能性较高;如果从事 某些专业领域 的业务,跳槽选择面较窄,但是技术难度大,被短期替代的可能性较小。

未来职业发展
安卓开发岗位短期内消失的可能性不大,但在大公司存在专门精通某个方面的业务或者是与其他技术相融合的趋势,需要不断学习才能适应行业发展。

学习路线

在前几节中,对安卓开发岗位的岗位要求做了一些科普,本节文章将介绍安卓开发岗位的学习路线。

目前,网络上有很多面经、算法题解、算法课等学习资料,如何合理利用这些资料成为技术求职者的一大困惑。笔者整理了一份安卓开发岗位学习路线供大家参考,包含面试中的常见知识点,主要分为以下几个部分:

学习路线主要适用于投递 安卓开发岗位 的校招生,其中项目、算法、计算机基础和语言基础同样适用于其他岗位的校招生和部分社招生。

项目

校招生在准备面试时要选择岗位要求最相关或者比较有价值的项目。

岗位相关项目 :尽量选择 技术栈综合 的项目,要不然就算简历通过了筛选,面试官也不会怎么问项目;

有价值的项目 :指该项目和岗位要求不算非常匹配,但是获得了 省级、国家级乃至国际级 的奖项,可以 侧面体现能力 的项目。

此外,如果有获奖的岗位相关项目,一定要写清楚年份,因为安卓技术发展太快了,可能多年前获奖项目的技术栈放到现在来看比较简单。

写在简历上的项目都需要熟悉并认真对待,以便在面试过程中回答项目相关问题,以下是针对不同项目经验的校招生的项目撰写规范:

  • 有相关项目经验:遵循 STAR 法则(情境(Situation)、任务(Task)、行动(Action)、结果(Result)) 梳理自己做过的项目。STAR 法则同时适用于 简历上的项目撰写 和 面试时回答项目 主要工作内容。
    此外,校招生还需要 复盘项目细节、项目分工和项目意义 等方面的内容,以应对面试官的问题。如果简历上项目太简单或者跟面试的事业部相关程度不高的话,面试官针对项目深究的概率较小,此时面试官会重点问其他内容。如果面试官比较感兴趣简历上的项目,校招生可以引导面试官向自己会的内容上提问,而且因为面试时间有限,提问其他问题的时间将大概率缩减。

  • 无相关项目经验,但是有其他项目经验:选比较有价值的项目,针对该项目梳理和复盘跟进过程,以凸显自己 学习能力、沟通能力和解决问题能力 为主。

  • 无项目经验:首先要清楚不是所有公司都接收客户端零基础的校招生,也要清楚某些公司对客户端零基础的同学要求不在于项目,而在于其他基础,如果你的基础知识非常扎实,也是有上岸的几率的。

算法

算法和数据结构基本是每个想要求职互联网大厂的必考项,大厂面试考算法实际上是考验面试者对数据结构的理解和解决问题的思维方式。因为每个人的算法基础都有差异,所以算法准备同样 因人而异。以下是笔者整理的面试中常见的算法题类型:

对于校招生而言,互联网大厂的笔试大概率是统一笔试,难度不一,很可能会遇到较难的竞赛题改造,但是面试遇到的算法题通常是一些 中等甚至简单 的题目,即使是难题,也会是常考的难题。

每个人的刷题方法不同,这里推荐 算法零基础或者基础比较薄弱 的同学 按类刷题,推荐 有一定算法基础 的同学参加力扣的每周竞赛、刷企业题库、精选题单、参加模拟面试等。

针对 算法零基础或者基础比较薄弱 的同学,以下列举几种常见方法:

  1. 点击力扣 - 题库 - 通过 标签 进行筛选对应算法知识点。

  2. 点击力扣 - 学习 - 点击专项突破可以看到常见的算法题类型,例如:

  3. 点击力扣-讨论-在求职面试中寻找与面试有关的算法整理,例如:

针对 有一定算法基础 的同学,可以进行一些能力提升和突破:

  1. 参与 力扣周赛,锻炼自己对新题目的敏感度,提升限时做题能力。
  2. 企业题库,保持面试手感。
  3. 针对性刷 精选题单,针对薄弱环节查漏补缺。
  4. 参与 在线面试,体验真实面试环境。
操作系统

操作系统是大厂面试必考知识点之一,以下列举操作系统中的常见知识点:

其中 进程和线程内存存储方式页面置换算法(特别是 LRU 和 LFU) 等是面试高频考点。

建议同学们回答这块的问题按 总分 或者 总分总 的方式,相关题目可以参考力扣讨论区的 面经 或者在力扣-学习区中学习相关 LeetBook,例如:

计算机网络

计算机网络相关的基础知识也是大厂面试必考知识点之一,下图列举常见考点:

其中 http 和 httpsDNSTCP 和 UDP 是面试高频考点。因为面试者都知道这些东西要考,所以面试官可能会问的比较细致,建议大家事先搜集相关内容,然后整理成自己理解的版本进行准备,在回答时要言之有物。

书籍推荐:《计算机网络自顶向下方法》,作者(美)库罗斯,标准黑皮书,国内高校用的教科片之一。

面试准备:推荐学习 LeetBook《计算机网络面试突击

数据库

大厂面试常考数据库相关的知识点,对于投递安卓开发的校招生而言,数据库可以不用像后端那么深入学习,但是基本内容要掌握,以下列举数据库中常见知识点:

其中 基本内容MySQL 的是安卓开发的校招生必备的知识点。

书籍推荐:唐汉明的《深入浅出 MySQL:数据库开发、优化与管理维护(第2版)》。

Java

大多数事业部的安卓开发岗面试校招生主要考察 Java 语言基础,少数事业部会考察 C++语言基础,特别是某些做sdk 的事业部,其底层源码使用 C++语言或者其他语言。安卓岗面试时很可能深挖到 源码,建议大家提前做足准备。

以下是 Java 的常见知识点:

想要应聘安卓开发岗的同学可以多搜一些面经,自己归纳高频知识点和题目,尽可能从实用代码角度分析问题。零客户端基础的校招生更要认真准备这块的内容,可以多参考一些后端面经。

力扣上也有针对 Java 学习的 LeetBook,例如:Java 面试突击

安卓

很多人刚接触安卓开发,不知道怎么学习。事实上,安卓入门并不难,但新手较难短时间内深入探究所有要点。这里建议大家将基础内容和基本的优化方法学完以后,直接实践一些含有较新技术栈和框架的项目,在项目中学习相关知识点,认真思考源码底层设计。

以下仅列举部分安卓面试中常考的知识点,具体题目可以自行搜相关面经:

适合初学者的书籍

  • 郭霖的《Android 第一行代码(第 2 版)》,目前已有第 3 版,但是第 3 版是基于 kotlin 语言的,初学者建议先学第 2 版基于 Java 语言的第一行代码。
  • 任玉刚的《Android 开发艺术探索》,主要讲述一些优化方式方法。

如果已经有一定基础,可以直接找一些博客或者开源项目进行实战演练,推荐鸿洋和郭霖的博客, Android 社区。

其他

其他需要准备的内容包括 设计模式、海量数据的处理问题、智力题 等。这类题目可能在部分公司中会被问及,建议面试前用几天时间搜索相关面经或者别人整理出来的同类题型,大概了解下即可。

设计模式:需要知道有哪些类型和基本含义,如果有使用过具体的设计模式,要复盘源码的设计和意义,常见的设计模式包括:

海量数据的处理问题:要了解常见的方法有哪些,面试官如果要考察该方面的知识点,会出一些场景设计题,建议大家提前搜索相关面经并思考自己该如何回答。

智力题 :部分公司会考智力题,但是题目大同小异,可以自行搜索一些常见智力题,学习答题的思维方法,这样才能在面试中更快思索出答案。

时间规划

安卓开发岗需要掌握的知识点较多,每个公司的考察重点也不尽相同,可结合自身情况规划学习时间,以下时间安排仅供参考:

  • 项目

    有相关项目开发经验且想投递大厂的校招生: 至少在面试前一个月到最后一次面试结束的过程 中持续不断梳理项目中的安卓和 Java 知识、不断学习前沿的安卓或者混合前端开发技术;

    没有相关项目开发经验且想投递大厂的校招生: 按零基础投递岗位,并 至少在面试前半年 系统性学习安卓开发基础和优化 APP的方法,并在打好基础的同时学习前沿的 APP 开发技术。

  • 算法

    算法基础较好:至少在面试前 2 个月 多参加力扣周赛或者多刷企业题库,保持对新题目的敏感度;

    算法基础薄弱:至少在面试前 3-4 个月 或者 集中某 1-2 月的时间段 按类刷题,在对各个类别的题目有一定解题思路后可以多参加力扣周赛或者多刷企业题库,保持对新题目的敏感度。

  • 计算机基础(操作系统、计算机网络、数据库等):

    建议学习过相关课程的同学 至少在面试前一个月 多看别人的面经及知识点汇总,整理并学习高频面试题。

    建议没有相关基础的同学根据自身情况 至少在面试前 3-4 个月 系统性学习相关知识点,可以直接跟着视频教程和书籍走,一定要有从无到有的构建过程,在学完一遍乃至多遍的基础上再开始整理并学习高频面试题(先读厚,再读薄)。

  • Java 语言基础:建议在刷算法的过程中深入学习某些数据结构源码,在复习计算机基础的过程中同步整理并学习 Java 语言特有的高频面试题,时间规划与计算机基础类似。

  • 安卓开发:建议有相关项目开发经验且想投递大厂的校招生 至少在面试前两个月 将安卓开发基础题、优化 APP 的方法和前沿的混合开发技术等按知识点整理并巩固,其中涉及到项目的相关知识点要重点整理并深入挖掘可能被问的要点,在准备过程中可以参考别人的面经中被提问的方式。

  • 其他(设计模式、海量数据的处理问题和智力题):学有余力的情况下, 在面试前几天 看看整理出来的材料,锻炼自己的思维方式,做好不一定会碰到的心理准备。

想要想拿到各大厂给的 sp 以上 offer,建议大家 不要落下上述的每一块知识点,特别是算法不能落下,因为有一些公司特别喜欢考核算法,算法基础不牢对面试结果影响很大,其次是相关项目一定要好好复习,做好被深入提问的心理准备。建议准备时间不够充裕或者零客户端开发基础的校招生,重点复习算法、计算机基础和 Java 语言基础,扬长避短,可以和面试官申请跳过某些不会的内容(面试中尽量别超过 3 个),引导面试官向自己会的问题上提问。

小结

本文主要总结了一些面试常见的知识点,具体题目和其他知识点还需要大家针对性准备。建议大家在准备到一半以上就开始投递简历和准备笔面试,并且在准备的过程中持续不断学习,在笔面试中锻炼自己的能力,方便查缺补漏。多投多面,注意面试顺序,相信大家都能收获满意的 offer。

小结

本文首先对安卓开发岗做了简单的岗位科普,如果大家对这个岗位感兴趣,还可以结合网上的其他信息、师兄师姐同学老师的建议和 APP 发展历史等信息综合分析。

对于校招生而言,有一定的实力加运气,选安卓开发岗位是有很大几率上岸的。至于未来的发展方向,不妨定个小目标并为之努力,一步一步脚踏实地前行。无论你是已经入坑安卓开发的打工人,还是想要尝试安卓开发的在校生,建议平时做好充足准备,趁早做职业规划,在网上搜集信息时根据自身情况,从多角度综合分析,根据自己所需判断是否适合该岗位。

最后总结了一些面试常见的知识点,给出了相应的学习路线指导,希望大家耐心学习,不断尝试,都能收获满意的 offer。

最新高频面试题

leetcode 206. 反转链表
leetcode 53. 最大子序和
leetcode 236. 二叉树的最近公共祖先
leetcode 39. 组合总和
leetcode 143. 重排链表
leetcode 114. 二叉树展开为链表
leetcode 215. 数组中的第 K 个最大元素

数据分析工程师

对于目前就业市场上的技术岗位,除了开发、测试、运维等常见职位之外,数据类岗位也越来越成为热门的求职方向。本文将重点介绍 数据分析 这一新兴岗位。

看到「数据分析」这几个字,也许大家和笔者的第一印象一样,觉得要做的工作似乎并不难,有大量数据后根据业务需求做分析并统计结果就好,但是实际的岗位要求并不仅仅是这样,它的内容跟随行业或业务的需求而变化,并且有着发展空间大、入门相对简单、薪酬待遇可观等独特优势。笔者将结合自己的求职经验,从以下三个方面详细介绍数据分析岗位,帮助大家对该岗位有更深的了解。

什么是数据分析

数据类岗位简介

笔者根据各大公司招聘官网上的招聘情况,对目前需求较大的数据类岗位做了简单汇总,因篇幅有限只展示部分企业。其中标注为蓝色背景的为数据分析相关岗位,从图中可以明显看出数据分析岗在知名互联网公司都有覆盖。

根据岗位细分,数据类岗位主要分为以下几类:

也许你会困惑,各种数据类岗位之间有什么区别呢? 笔者按照工作内容、岗位要求和薪资待遇对数据岗进行了简单汇总,大家可以根据需要对各个岗位做深入研究。

其中,薪资待遇只是一个大致范围,具体还需根据应聘者的自身条件、能力展现和面试表现等方面来评估。

数据分析岗位分类

根据不同业务需求,数据分析实际需要做的工作有很大差别,对具体技能点的要求也会有一定差异。数据分析的工作方向主要分为以下几类:

笔者将结合具体 JD 实例来说明不同方向的差别。

偏技术方向

下图的岗位描述清晰表明有机器学习和深度学习相关经验的优先,所以这类的数据分析岗位实际上是向算法方向靠拢,对编程、计算机基础、算法基础的要求也会更高,难度相对较大。

下图的岗位需求与数据仓库或者大数据、分布式计算等有更深的关联,与数据研发或者数据挖掘等岗位有部分共同之处,需要掌握 MapReduce、Hadoop、Hive 等大数据相关工具。

偏技术方向的其他非互联网行业的数据分析,笔者在求职过程中也见过很多,可以给大家举个例子。

这是某半导体行业公司的数据分析岗位招聘需求,岗位要求写得非常简单,根据笔者进一步了解,实际上它需要求职者具有扎实的行业知识。比如半导体设备在实际使用过程中需要监控各元器件的运作情况,包括温度、湿度影响,电压电流等指标,由此会产生大量数据,而该数据分析岗位需要具备相关专业知识,所以是比较独特的一种。

偏业务方向

偏业务方向的数据分析岗需要通过数据展现出一些内容,来观察现有结果并且辅助后续决策,所以技能点主要在 SQL 数据库、可视化、统计学、以及对业务的敏感度上。

数据分析岗位要求

总体来说,数据分析师的岗位要求主要包含以下几个方面:

(1)学历和专业

一般来讲学历并没有严格限制,本科以上均可,高学历固然会给 HR 和面试官带来期待,但在笔者的经验看来,实力才是更为重要的因素,所以小伙伴们不要有学历自卑的情绪,做好充分准备更为重要。另外有些公司会对专业有一定要求,如计算机、数学、统计学、经济学相关等。

(2)实习或项目经历

根据笔者经验,偏技术方向的数据分析面试对科研或项目经历更为看重,因为这是对于面试者具备所需技术能力的证明;而偏业务方向的面试更会注重实习经历以及知识在业务当中的运用。

一些同学可能没有时间去找实习,其实也可以好好准备在校项目,然后把所需的基础知识学扎实一点,表明自己基础稳固,在实际工作中也能快速上手。想参加比赛的同学可以关注各大厂或者银行举办的网赛,在后面的内容会讲到,也是面试的加分项。

(3)编程基础知识

编程基础知识主要包含计算机网络、操作系统、数据结构、算法等知识点,对于计算机相关岗位,基础知识非常重要,可以为以后的工作打下很好的基础。对于数据分析岗位,基础知识是 笔试 的考察重点。

(4)机器学习、深度学习等算法知识

如果想做偏算法的数据岗,机器学习、深度学习等算法知识需要多花时间准备,在理论知识和实践经验两个方面都需要下功夫,后文也会具体讲述如何准备。

(5)可视化工具

可视化工具的应用一般在偏业务的数据分析中会用到,学习起来也很简单,可以从网上找视频跟着学习,很快就能上手。

(6)统计学和数据库

统计学和数据库也是必须掌握的内容,统计学相信很多小伙伴都接触过,学清楚基本知识就可以。数据库重要性更强,因为基本所有的技术类岗位都必会问到数据库的知识,有操作数据库的实战经验更好,没有的话也需要把理论知识掌握牢固,给面试官一种基础扎实的感觉。

(7)Hadoop、Hive 等大数据工具

这部分主要是偏向大数据,根据笔者经验,并不需要把偏向大数据和偏向算法的所有知识都掌握,因为时间和精力都是有限的,学习知识要先深再广,所以小伙伴们可以结合自己的已有经验,仔细考虑自己的兴趣点在哪里,将(4)和(7)选择一种去学,在后面还会有更具有针对性的学习路线图。

如何进行求职准备

以上我们对数据分析岗位类别和具体要求做了详细介绍,接下来将介绍的是如何来系统地准备针对数据分析的笔试和面试。首先我们将所有相关技能点宏观地总结在下图中。

数据分析岗位学习路线
下图是不同方向的数据分析岗位的学习路线,其中 (1)~(8)与上图相对应。小伙伴们可以根据自己的需要对技能点的准备进行选择阅读。

(1)项目经验和比赛经验

如果实在没有时间参加实习,同学们可以参加一些比赛来获取经验。其中 Kaggle 和阿里云天池是很多赛事聚集的网站,Kaggle 是一个英文网站,他们可以提供 GPU 资源,更重要的是上面有许多入门级比赛,也能看到其他人公开分享的方法与经验,还可以在社区进行提问,对于新人学习和观察大牛思路非常友好。另外,许多大厂中厂(如华为、阿里、腾讯、中兴等)或者银行(招商银行、农业银行等)在六七月都会举行网赛,适合有一定经验的同学参与,大家可以及时关注。

(2)编程基础知识

对于转行或者基础薄弱的同学来说,需要尽早开始补充知识,因为基础知识在笔试中会占很大比重,主要包括计算机网络、操作系统、数据库原理、Python/R 语言等。

(3)机器学习、深度学习等算法知识

对于机器学习、深度学习等算法知识的学习推荐周志华的 《机器学习》,李航的 《统计学习方法》,内容很基础细致。英文视频教程推荐 Andrew Ng 的 Coursera 和李飞飞的 CS231 。中文视频教程推荐台湾李宏毅。对于实战经验的积累,可以用实验室项目或者「项目经验和比赛经验」中提到的网站进行学习。

(4)可视化( Power BI,Tableau 等 )

想要自学快速上手可视化,在 B 站等网站上看几节视频就可以搞定。在这里笔者推荐一些入门书籍:

刘红阁的 《人人都是数据分析师:Tableau 应用实战》,全面介绍了 Tableau 的核心功能,包括数据的编辑、连接与管理,图形的分析与展示,并且结合了很多实际案例,使得工具学习更具有可操作性。

高云龙的 《大话数据分析》,以对话的形式展现实际中的职场问题,通俗易懂,并且每一章都结合 Tableau 来分析和解决遇到的问题。

(5)统计学

统计学的教程有很多,对于一些重点知识进行深刻理解就可以,比如几种数据分布,其使用场景,假设检验、具体步骤等等。

(6)数据库

数据库知识是笔试和面试的考察重点。学完 《 MySQL 必知必会》《深入浅出 MySQL 》 两本书可以足够应对笔试面试。常用的增删改查操作、索引、索引背后实现原理、查询如何加速、事务隔离级别、内连接外连接等,都是常见的面试题。

(7)业务知识及思维培养

业务知识及思维培养最好通过实习学习和培养。不过,现如今互联网信息发达,很多数据分析从业者都会在线上分享自己的心得和体会,秦路的 《七周成为数据分析师》 是非常好的入门课,教给我们该从哪些方面去思考和关注,笔者看过之后收获很大。另外 CDA 也是很多人在推荐的课程,包含的内容也更多。推荐的书籍有 《精益数据分析》《增长黑客》

(8)Hadoop、Hive 等

其实大数据方向的工具有很多,可以先从 Hadoop 或 Spark、Hive 入手学习。推荐 《 Hadoop 权威指南》《 Hive 编程指南》 两本书。

时间规划建议

(1) 项目或比赛:每项内容可准备 1~2 个月

项目或比赛在精而不在多,必须保证把项目中每个细节都弄清楚。项目中遇到了哪些问题?有哪些解决方案?用到了什么技术栈?与其他方案相比有什么优势?最后结果怎么样?细致梳理项目中的各项内容,才能在面试中更加从容。

(2) 编程基础知识和数据库:1~2 个月

这一块内容虽然看起来很多很杂,但在实际的笔试面试中考点重复率也很高,如果时间不充分强烈建议先把重点内容学清楚,再多做笔试题或者多看面经来不断巩固、查漏补缺。SQL 相关的学习可通过力扣上的数据库模块刷题,熟能生巧。

(3)机器学习等算法知识或者 Hadoop、Hive 等大数据技能:3~4 个月

如上文所述,机器学习算法知识和大数据相关技能二选一来学习即可,其中前者理论性更强,对数学功底的要求也更高,需要多看理论、多进行推导,注重算法细节。

(4)可视化和统计学:1~2 周

这部分内容难度并不高,需要尽可能速战速决,掌握重点内容,快速上手可视化工具。

(5) 业务知识及思维培养:1 个月左右

这部分内容涉及到思维培养,能在实习中培养固然是最好的,如果实在不能去实习的话,需要多读书,多学习别人的思维,最后形成自己的理解和思维模式。

如何选择不同的数据分析岗

数据分析岗位种类繁多,同学们可能会陷入纠结,那么如何做出合适自己的选择呢?笔者建议主要考虑三个方面:知识储备、个人兴趣、以及发展前景。

(1) 知识储备

很多小伙伴在校期间可能已经有一些项目经验积累,不管是机器学习算法方向还是大数据方向,沿着自己已有的知识储备继续深耕是一种非常省时省力的方法,可以避免初学者入门时可能遇到的断崖式跃迁,并且学习相关技能、积累经验也更快速,求职自信心也会更强。

(2) 个人兴趣

除了自身已有的技术栈,求职者的个人兴趣也非常重要。小伙伴们需要想明白,自己喜欢静下心来钻研问题,偏向于做技术类岗位,还是更喜欢了解业务、与人沟通,偏向于业务类岗位。

(3) 发展前景

同学们在求职过程中,最好能为自己做好近几年的规划,然后在工作中沿着自己的规划前进。不同方向的数据分析发展前景也有差别,求职者可以考虑自己以后向算法或者大数据岗位发展,当然也可以向业务线发展,根据以后的目标来确定现在的选择。

小结

经过前面的梳理和总结,小伙伴们对于数据分析这个岗位的了解是否更加深刻了呢?笔者认为,要找到真正适合自己的工作,首先就要对这个岗位进行充分了解,然后有针对性的进行知识储备。也许不少小伙伴会觉得时间紧任务重,但需要明确的一点是,我们并不需要满足 100% 的岗位要求才能投递简历,基本满足 60%~80% 就可以了,我们需要做的是尽可能把自己好的一面展现出来。在笔试和面试的过程中,一边积累一边尝试,及时总结查漏补缺,毕竟很多面试的考点重复率还是很大的。

最新高频面试题

leetcode 912. 排序数组
leetcode 121. 买卖股票的最佳时机
leetcode 103. 二叉树的锯齿形层次遍历
leetcode 101. 对称二叉树
leetcode 206. 反转链表
leetcode 54. 螺旋矩阵
leetcode 283. 移动零
leetcode 1143. 最长公共子序列
leetcode 92. 反转链表 II

作者:LeetCode
链接:https://leetcode.cn/leetbook/read/2021-fall-recruitment/ryjeyg/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward