/job

备战校招 &求职 &面试指南 &工作选择

施工过程中,可以随意吐槽,督促,加以建议和想要了解的都可以提问 或者看到错别字你们都可以随便修改。开启一个issue我们来讨论。

备战校招 &求职 &面试指南 &工作选择 (施工中🚧)

曾经BAT 离我们遥不可及, 但是当你看完文章以后, 能够完成上述要求. 甚至做得更多. BATM3 所有大公司都只是离你一步之遥

序言

找到满意的工作,进入有名气的互联网大公司,获得大部分应届生难以披靡的高薪offer,无非是大部分同学在大学的其中一个憧憬的梦想。本文是将如何找工作、如何面试、准备面试等技巧进行罗列,希望能够给予大家的一点借鉴,同时也希望大家根据自己的情况加以修改,制定适合自己的计划并一步一步的实现。 与此同时,我也希望从我们工作室走出去的同学能够越走越远。每个前辈再多迈进一点,对后面的同学就是一种机会和鼓励。希望大家也能够对文章进行修改同时能够补全自己的建议。

(ps: 文章很多地方充斥个人色彩和个人的理解,如果觉得不爽可以发个issue我们来讨论。另外,针对的人群主要是本科的找互联网企业实习和工作的同学)

个人定位

首先大家应该开始对时间有个深刻的感受。大学其实只有两年半,大三大四更多的时间可能都是花在找工作或者准备找工作的路上。同时请注意每年的上半年即春招在春节后的一两个月是找实习和最后找工作的高峰期,每年的7~11月是秋招招工作的时间。转换成四年本科时间就是:大三上的期末就需要准备实习。大四上的时候就应该找到工作。请大家务必记住这些时间点因为如果错过了高峰期那么后面就难以再遇到这些机会了。

然后,回到正题这个章节要谈到的是个人定位和指定计划,首先我们要清楚的了解自己,问自己到底想要什么,因为在求职的路上可能会碰到很多奇奇怪怪的东西来让你走歪,所以你必须清楚自己想要什么,这里可以先问自己几个问题。

  1. 我要找工作还是考研捏(ps:不能并存)?
  2. 我想当一个工程师吗?
  3. 我以后想做什么方面(研发/运营/产品/HR)的捏?
  4. 我最想去哪个公司(哪个团队)?
  5. 等等..

通过这些问题来了解自己想要什么,从而强化大家的信念和目标,避免出现一边找工作一边准备考研,或者准备考研时候想着后面能够找工作随便考,这种尴尬的事情发生。另外就是确定了就头都不会往前奔跑。不要一直在烦恼和彷徨的抉择中浪费自己的时间。

接着,就要开始对自己的目标进行规划和安排,并一步一步的实现。

备战校招

这一篇章主要是围绕如何写简历和邮件、如何为基础(前端/java/产品/HR)做复习和笔试做准备。

写好你的简历

简历就是你的名片,在别人没有跟你正式交流之前,通过简历的方式无疑就是最有效的途径来了解你一个人。请不要马虎了事,对待自己的简历时候请认真的写。简历通常使用场景:

  1. 海投。在没有到达真正面试你的人之前会过HR 和各种内推人的眼,这个时候要脱颖而出也是不容易的事情。
  2. 面试。在面试过程中面试官会认真的看简历上面内容不断的来聊他在简历上面感兴趣的keyword
  3. 霸面。如果需要霸面也会有HR快速的对你简历阅读看是否有面试机会。
  4. 自我营销。假如你足够优秀,你的简历也放在了比较不错的平台:如Linkin、Github 等,会有人询问你是否有意向加入。

以上就是简单的列举了几种常见的场景。接着我们开始讨论如何写好一个简历。

简历大纲

在职场课上,老师会大家你写简历用了多长时间? 我自以为一个月可以了吧? 不。是你大学的四年,甚至更久。另外我会经常碰到很多人说我没东西写、我没有参加比赛、没有加入工作室、没有xxx...真的没有吗?虽然可能看来很小的东西,如果做得足够的认真足够的完美,这个就可以写,虽然看上去没有各种光彩耀人的奖状、没有绚丽的经历,但是简历本身就是反映你的一些经历而已。所以大家一开始不要被限制,想到什么在大纲上面就写什么。大纲上可以罗列下面几个模块:

  1. 基本信息(姓名、联系方式、电子邮件、教育背景..)
  2. 个人经历(实习经历、社团经历、工作经历...)
  3. 技能列表(可以分门别类的做罗列)
  4. 项目经验(自信的一些项目进行描述)
  5. 获奖和荣誉
  6. 自我评价
  7. ....

每块内容根据重要的分量从上到下的罗列。并且对某些模块进行详细的描写。 在写大纲的时候千万不要想着用一页的内容来直接概括。能写多少写多少。后面再慢慢来精简。也切记不要一上来就去找一个模板将空白处填写内容,这样你很容易被之前模板给限制**,模板只是让你内容展示更加漂亮而已。如果你足够优秀,其实根本不需要理会什么一页简历、漂亮模板之类的,直接用word 直接写,稍微排版以后直接投。也能够得到很多人的青睐。

挑选模板、填充模板

前面如果你讲所有你认为你写了内容已经足够多的罗列出来了。就要开始找相应的模板,简洁明爽为最佳。

  1. 会PS的同学可以到dribble 或者到别的网站来寻找ps的模板来修改。
  2. Markdown简历 markdown_resume
  3. Github respo简历 resume
  4. 自行查找,关键词:简历 模板 resume

选择好需要的模板就开始讲之前大纲的内容删减然后填写到模板中。

调整

调整的步骤是在每次面试之前,每次投简历之前/投简历之后都需要反复的去看。

  1. 在面试中如果遇到了面试官的误解、或者自己解释不清的地方,回头需要调整
  2. 投简历之前对照着Job Description 修改自己的简历必要部分。
  3. 投简历之后一直没有回声,这个时候想到的是自己的简历的内容是否能够直接有效的传达到位。
  4. 习得新的技能、找到新的offer 也可以写在简历上。

不能懒,简历需要多修改。

邮件正文

如果邮件正文写的精简有力,反馈会比在简历上面写多少字更加有效。不难明白,如果通过邮箱投递简历,第一眼是看到正文接着才下载简历(不排除某些大厂的邮箱只看简历)。有些同学直接正文为空或者简单的一句话,如果遇到一些挑剔的HR 可能就被pass 了。

正文部分无非写的内容是需要到打动看到文字的人, 具体的内容主要包括: 
1. 我是谁? 
2. 我的能力是什么?
3. 你录用我能够得到什么?
4. 我的优势是什么. 
5. 我现在手上获得的offer
6. 嘘寒问暖 之后叫你赶紧看我的简历..
7. etc..

上面的点如果能够覆盖越多, 你能够获得的反馈越快越明显, 但是要注意一下字数, 还是那句精简有力. 下直接甩出模板, 第一段非常简单.只是覆盖了一二两点.

尊敬的小姐/先生:
  您好!
     我是一个爱编程、爱折腾的人,有较强的学习能力和独立思考能力,有足够多的热情和激情投入工作中;暑假期间曾在xxx实习,接触了关于流式计算、分布式框架方面的知识,对分布式、大数据处理有浓厚的兴趣;熟悉从前端到后端整个的开发,正在往全栈工程师的路上走。
  
  随信附有我的简历。如有机会与您面谈,我将十分感谢。 
   
  此致

后面的改进版.第二封主要是涉及了很多个人的点, 所以删了很多很多. 如果有兴趣可以找我要来看. 这里给出简单版. 但是不难看出. 如果你讲这些写的非常清楚, 自己的决心也是非常的坚定, 我相信都会给你一个面试的机会的.

    xx 先生您好,非常感谢您花宝贵的时间查看我的邮件。
    我是xxx的xxx,暑假的时候很幸运地能够在xxxxx担任研发实习生 。在那个时候接触到很多关于分布式、存储、监控方面的知识,目睹了大数据为生活创造的价值。听闻xxx的机器学习和大数据平台在国内领先。所以我抱着敬畏之心来毛遂自荐。(吹一下人家公司如何如何厉害, 你如何如何的崇拜)

录取我的好处:
    1. 在xx实习时接触的架构能够帮助我快速了解团队的业务和架构。xxxxxxx(学习能强那就需要强调出来. )
    2. 有责任心。xxxxx(怎么有责任心需要简单说明. )
    3. 拥抱变化、学习能力强。能够根据团队的需要快速学习新知识并灵活运用。
    4. 乐观、耐操、可塑造性高、工作投入认真。

    随信附有我的简历。如有机会与您面谈,我将十分感谢。 

文字是有力量和感情的, 大家都需要去雕琢自己的正文, 以确保能够 达到意思的同时能够让对方感受到你的热情和真切渴望这份工作/实习的机会.

基础和笔试( 前端, java, 产品, HR)

ps: 现在暂时没有产品 运营 HR 等的面试技巧介绍 这个章节只有技术部分 这个章节比较重要,也比较庞大,如果写不完我可能会另外开新的篇章。同时会将一些面试的问题放在上面,但是答案肯定是没有的,都是需要大家自己找到答案的。

下面我大概会分成 基础部分技术实现场景实现其他来给大家有效的准备面试和笔试

基础部分

基础部分非常重要,很多时面试的过程中因为一上来就会简单的问一些基础的知识来做开胃菜,及时你实践很强,做了很多项目,如果没有很好的基础作为扎根,会让人对你产生不太信任的感觉。另外基础部分也是笔试经常出现的地方,复习这个部分主要的是为了过笔试和面试的头10分钟能够更好的过渡。

1.基本数学

基本的概率论和统计学,简单的高数内容. 这些都会在笔试题中经常出现, 其实做几次你基本上就记起来. 也不会非常的复杂和难. 建议去例如牛客网之类的网站刷一下笔试题, 第一次看到可能会懵. 但是后面看多了就那样了.

2.数据结构 和算法

算法和数据结构基本上肯定会出现,不管前端还是后端都会在面试的过程中 出现手写代码机器上写代码等等的场景,需要大家认真对待.在理解算法的同时需要多加练习保证不要手生.同时在面试的过程中, 如果是需要写代码的场景必须要做到以下的

  1. 问清楚面试官这道题目的意思、算法的场景、极限的情况
  2. 极可能的在写之前跟面试官确认你的实现方式.如果有多个最后都说了.然后说一下这些方法的时间和空间的复杂度.
  3. 开始的部分,先将所有的异常情况给处理了.
  4. 尽可能的在半小时内完成,如果简单应该更快.
  5. 如果碰到一些小问题,可以旁敲侧击的问面试官需要提示.
  6. 切记不要一上来就不做.即使不会做也写个简单的伪代码(因为有一些情况是面试还可以 做个笔试过场, 如果你最后笔试连尝试都不愿意尝试那前面的就白费了.)

复习的书籍

  1. 剑指offer》《编程之美》我敢说面试遇到的题目这里都会有.还是一模一样的.
  2. 算法》我也看过算法导论,但是这本更多是倾向于实践的方式来阐述算法的本身,所以非常有价值,其实后面的练习题如果都能一一完成对个人的提高的非常大的.
  3. 数据结构》课本,对于本来就觉得算法很难啃的人来说课本是最快同时是最有效的复习手册。将老师讲了或者没有讲的都系统的看一遍是最快同时也是能够满足笔试要求的。
  4. leetcode》实践书籍, 各大公司的面试题目,根据类型来做.多做几次就发现有一些都是相类似的.

其实还有很多,但是这篇文章主要是针对快速复习和面试的方案这里不过多阐述,有兴趣可以发个issue 来讨论.

3.计算机网络

计算机网络,主要更加关注的是 TCP/IP 层 和 应用层(http,https,telnet,ssh 等等) 在复习的时候应该要多想想这个东西在实现的过程中是怎么使用的,因为学习时候都是一些比较抽象的概念, 应该想想平时做过的项目中应该有那些部分比较名密切的.都需要好好想想.

复习的书籍

  1. 计算机网络》 课本,也是一本适合面试看的东西.主要更加侧重于后面的章节, 前面的章节大概了解即可,另外书本上大部分都是概念为主.所以最好去尝试抓包(wireshark)能够更加清晰的知道这些的实现, 或者你可以尝试做一些关于 网络方面的小demo 这样能够让你更加的理解.

     具体的demo: 可以尝试做一个简单的聊天室. 能够实现流量控制, 在消息过多的时候, consumer这边慢下来的时候, product 同时也能够利用tcp 的window 来做阻塞.浏览器上也是尝试实现一个实时的聊天室(轮训? 反向ajax? socket? ) 都可以让你们对网络有更深的印象.同时有时候也是能够作为你在面试上面的谈资,面试官其实会注意大家平时做的小实验和动手能力的程度吧.
    
  2. http权威指南》 不用多介绍. 前端必问 4xx/3xx/2xx 是代表什么.同时可以了解一下CDN 的原理/实现/使用

  3. TCP/IP协议详解 卷1

4.数据库

数据库是我们打交道非常多的一个系统, 我们需要非常清楚我们自己写的sql 的同时我们也要了解里面的一些原理,来帮助我们在开发过程中去理解更加深层次的内容. 同时也是在出问题的时候帮助你找到问题的原因的好方法.

  1. 高性能mysql》 非常好的一本书, 很清晰的表达了数据库中的主要点.你可以带着问题去理解,一条sql下去数据库到底做了些什么. 判断自己的sql 写的好还是坏. 事务的处理(如何处理多个事务的)
  2. MySQL性能调优与架构设计》 这本书介绍了现在的mysql 在应用方面的介绍.可以拓展一下知识.
  3. MySQL技术内幕》详细的介绍了innodb 里面的一些实现, 如何配置如何使用等等.

前端的同学可以留意一下mongoDB 这个K-V 的nosql 数据库. 更多的可能需要注意 scheme的设计, 另外要留意使用的场景.

5.计算机操作系统

这个部分有大量的理论部分, 所以需要大家要知道这些理论之后找到对应的实验来理解.

io (同步异步/阻塞非阻塞) 进程/线程/协程 通信 多线程/多进程 的安全. 锁

  1. 现代操作系统》阐述了基本的一些原理.大部分都是理论介绍,需要结合一些实际的demo 来加深理解.
  2. how browser work》 前端与之对应的是浏览器.可以去看看浏览器的document.

这个章节我在复习的时候可能也比较轻描淡写的过了一遍,并没有很深刻的理解里面的大量的内容.但是在面试的过程中还是有问到相关的内容.可以说是加分项吧.

6.语言基础

除了上面的4大基础. 这里还有一个就是语言基础, 通常面试都会主要围绕的一个语言来聊.这个时候通常上来先给一些语言的基础来聊聊下面主要介绍JAVA 和JS

JAVA

  1. 字符串
  2. 集合
  3. io
  4. 多线程 (重要)
  5. JVM

上面这些都是需要看完所有的源码. 和理解jdk里面的设计.同时能够用比较简洁的语言来概括你看到的内容,这个就是比较好的达到了预期的目标了.

  1. Java核心技术·卷1》 基础知识
  2. Java编程**》 这个时间点回来看这本书受益匪浅.
  3. Java并发编程实战》这里有一些比较有意思的内容, 主要是围绕如何保证线程安全来阐述. 不过有一些抽象的内容需要考虑一下.
  4. 深入理解Java虚拟机》给你对JVM 有个简单的了解.理解JVM 里面到底在做了啥? 怎么来实现GC 等等.
  5. 深入Java虚拟机(原书第2版)》 对上面一本书的补充. 这本可能更加的理论. 上面那本还有一些小的实践的地方.

JS 这块找人来补充

技术实现

技术实现指的是在这些基础之上已有的框架和service. 主要是要考察大家的在使用这些的过程中除了能够做一些application出来以外有没有了解service 本身是如何来协助/帮助 你减轻负担?

前端: 这块找人来补充 Jquery ? require? angularjs? vue? react?

后端: JAVA 方面(服务器端):

  1. web 方面: 主要是更加深层次的去了解强大的spring和Mybatis, 查看官方的文档配合源码的阅读, 去理解平时只是用api的框架背后是如何实现的. 找到一个主要的主线分支即可,不需要面面俱到.
    另外, 还需要了解最基本的javaweb 本身,说白了就是为什么在java 之上会推出一个servlet(所有的框架其实都是基于这之上实现)servlet 是如何实现的. 最后, 看看web 容器(如: tomcat,jetty) 如何来加载一个war包然后来渲染出需要的页面.
  2. service方面: SOA 的是架构使用.需要学好一个spring, 但是要明白几个关键词. RMI, 序列化, AOP, 事务.
  3. bigdata: hadoop, hbase, zookeeper,比较适合去练手.也有非常非常多的paper 来学习, 不需要买什么书, 就看官方英文文档即可.这里明白几个关键词: Consistency(强和弱)、 Availability、Partition tolerance(出了问题如何恢复)

书籍: 这里开始其实书籍就非常多,同时对新手非常不太友好.所以这里的建议都是看官方文档.还有基本比较基础的书籍可以看一下:

  1. 深入分析Java Web技术内幕》 可以作为复习的index, 这本书很好的告诉你 哪些方面是要自己注意的.
  2. 分布式Java应用:基础与实践》 也是简单的概括一下.也是可以作为index 来看. 里面讲的比较简单, 更多的是需要大家自己去深入的看源码和别的书籍来理解. 不过作为面试还是挺好的.工作室有影印本.

本来还是想推荐一些关于web 框架的书籍的, 但是怎么说呢? 在我看来还不如看官方文档, 然后配合blog 来得实际.

客户端: 下面内容由@Kermit95 提供来源  后面有时间更新一下 基础:

  1. 良好的Java基础
  2. 熟悉Android的api,以及相关的零碎知识点(ide的使用,gradle的使用,开发调试能力等等)
  3. 深入了解Android系统,由浅入深:线程通信,View的绘制,进程通信,以具备自定义工作线程,自定义控件,App性能优化的能力。
  4. 在此基础之上考虑软件架构,选择使用合适的类库。

进阶:

  1. 一些高级的类库,这些库之所以放在进阶里,是因为它用到了新的技术,这种“新”就好像你第一次听到“面向对象”。编程范型的理解不是一天两天也不是一个月两个月,甚至不是一年两年,你需要把自己想象成老禅师。 
  2. Android NDK开发,学习C++,学习C++的成本已经超过了Android本身,如果你已经学成了C++,Android不算什么了,真的,去拯救世界吧。

书籍:

  1. 《Andriod开发权威指南》
  2. 《第一行代码》
  3. 《Android开发精要》《Android群英传》
  4. 全程《Android高级编程4》保驾护航。

场景实现

除了问基础, 问技术实现, 还会问一些关于项目的实践, 或者说在现场让你设计一些系统. 这个时候我们应该如何处理?

场景问题:一些在面试中新建的场景设计, 比如让你设计一个xxx 系统,说一下一条url访问之后发生了什么...

  1. 别慌. 慌了你很多想说的内容都忘了.
  2. 不断的问细节. 范围什么的.(不要太过分.反问人家十几分钟的问题就不好了)
  3. 概括整个系统的设计和思路. 解决的问题和场景. 你打算用什么, 为什么这样挑选. 针对一些你关心的点详细说明
  4. 用之前看到过的系统来做类比设计.
  5. 将你大概能够考虑到的内容全部都说了. (最后带上一张纸画画写写. 同时罗列)
  6. 然后问问面试官有什么需要补充的, 如果觉得不满意的话.

除了场景这个时候又回到我们自己的简历本身了. 简历其实是有伏笔的功能, 你写上去的内容都是为了能够在面试的过程中让面试官问到你这些内容(你问我? 不算太会的,也写了怎么办? 直接说只是了解不太懂. 面试官不会为难你的, 不要支支吾吾的想说又不想说的最尴尬了)

项目问题: 你需要非常熟悉你自己的项目, 只要聊到项目你应该要孜孜不倦的跟面试官聊. 不要2 3 分钟就完了.通常面试官会问你:你在这个项目中主要做了什么?/你做了哪些部分?/你觉得难的地方?/你为什么用这个框架? 其实这些题目的初衷都是一样的,你都要提前准备好:

  1. 项目介绍
  2. 个人职责
  3. 框架使用(为什么要用这个框架) / 框架的优点
  4. 框架背后的原理和实现(重点)
  5. 可以改进的地方
  6. 在项目过程中遇到的困难/ 怎么解决困难
  7. 在项目过程中学到什么?
  8. 上面这堆你怎么都能写个800字吧? 准备其实也是让你回顾项目的一个好的方法.

其他

有时候还会问你一些奇奇怪怪的问题,非技术论证方面的, 什么兴趣爱好啊. 之类也可以稍微准备一下. 我暂时没有想到其他的.有的话再补充

求职

联系公司

其实现在找工作的途径也无非就几种, 一个是通过各大平台网站, 上面会有很多招聘的信息, 大部分的小公司会在上面统一招聘, 大公司都会有自己的平台来保留自己的人才资源不让外流, 所以一开始就要开始关注各大公司的网站.

  1. 各大官网 阿里 / 百度 / 腾讯 / 新美大 / 滴滴 / 今日头条 / (帮我补充吧)

  2. 通过一些平台, 譬如, 拉钩网/猎聘网/人才网/中华英才/....

  3. 通过内推,也是主要的手段, 大部分都是通过找到内推者发送邮件, 来实现的, 所以也是强调你的简历和邮件能否过关了.

  4. 通过一些新的平台. 比如简寻 / 100Offer 这种逆向的方式来找工作的, 就是你的简历会给你匹配相对应的招聘工作给你, 而不是你自己投, 也是非常不错的.

  5. 通过BBS, 主要是 水木 和 北邮的bbs 上面有太多太多的招聘信息, 还是一些非常非常优质的信息, 大家可以没事就去看看.

  6. 最后, 一些比较偏门的, 比如 找知乎大V ,在github上面找大神内推, 在linkedin 上面找人内推 , 都是可以一试的.

最后提醒一句, 不要犹豫不要想着等到自己完完全全准备好了才敢去投, 这样你在那个时间点错过了就错过了很多机会了. 你可以边投边继续复习, 机会错过了就没了.

面试技巧(电面, 现场, 视频)

薪酬

工作选择

 无非是大公司 小公司的抉择.