做Android开发摸鱼是要付出代价的,被主管劝退,我后悔了!

我上月被裁现在找工作,准备面试的时候看了好多技术文章越看感觉自己掌握的东西越少。马上要去面试了感觉心好虚。

事情经过

是的 我的主管也觉得自己是猪…(主管原话)

我去年招了 2 个安卓开发,其中一个同事面试上机布局还能布,结果第一周发现他大部分事给他表弟远程桌面在给他搞,这种工作能力、工作态度、还有职业操守如何能在公司立足!

还有一个就是你, 本来我觉得你是可以培养下的,结果过年疫情期间 2 个月你在家根本没什么都没学。年后复工我一直在忙自己的事根本没关注进度,只看到每天有 commit,但后来我发现你越来越不对了。

各种小问题, 比如位移,图片不能自适应大小,视频缓存 KEY 都是一致的导致缓存失败, 各种崩溃,都是特别明显的小问题。

不看不知道,一看吓一跳,我翻阅你的工作QQ聊天记录、网址,发现我一整天都在各类社群博客注水。

一气之下,把我干掉了!

我想问下做了四年的 Android 开发应该要有怎样的技能树?

在这里插入图片描述
看到上述网友的遭遇,那面对这种情况,作为开发者,我们能做的是什么?最基本的,脱离舒适区,不停磨练自己的技术。

我记得我刚工作的时候,对面试总是很恐惧,一方面怕简历无法通过筛选,另一方面怕现场发挥得不好,浪费了自己和面试官的时间。我当初并不知道对比其他求职者,自己的优势和劣势在哪里,也不知道自己到底值多少钱。 面试的时候都觉得面试官很严肃,问的问题我也都答不上,肯定没有机会入职,觉得自己烂透了,也不想浪费时间去面试多几家了。

现在回过头看,我觉得当初自己在欺骗自己,我真正担心的是即使自己认真准备简历和面试也对结果毫无影响,更不敢去想如果找不到工作没钱缴房租怎么办,索性海投简历碰运气。其实认真准备简历和面试是很有用的,因为毫无准备,随便面试的求职者真的太多了。 工作了几年,我作为面试官筛选过千份简历,面试过不下 100 名工程师。我慢慢发现,招聘真的是一件非常难的事。招的人要有计算机基础知识,有项目经验,愿意学习而且愿意来这家公司。所以只要你有一定的实力,现在的互联网行业还是买方市场,认真准备总是有收获的。我希望把这几年作为面试者和面试官身份的的经验給大家,希望大家可以学到从中一些面试的技巧,找到心仪的工作。

准备阶段

1.随时都在准备

随时准备并不是鼓励频繁地跳槽,而是要有随时有跳出舒服圈的准备,也许求职者已经很满意现在的工作,薪酬,觉得习惯而且安逸。不过如果公司突然倒闭,或者部门被裁减,还能找到这样或者更好的工作吗?我建议各位,每两三个月可以去面试一两家公司,因为你已经有不错的工作了,所以可以带着轻松的心态去面试,同时也可以增加面试的经验。

2.技术基础

  • 基础知识

基础知识主要包括:编程语言基础,算法基础,计算机网络,操作系统,数据库。面试之前的复习阶段非常重要,通常大家会通过阅读各类的书籍来补充自己的基础知识。但是计算机方面的书大多是大部头而且艰深,一时间也看不完。所以我在GitHub这个GitHub中列出了面试常见的问题以及对应的解析供大家参考,希望大家带着问题去看面试题,也可以从某些章节开始复习,这样会更加有目标与效率。

1.编程语言基础

  • 数据结构的实现细节以及比较:数组,链表,哈希表是如何实现的,底层内存分配是怎样的?插入与查找的时间复杂度是多少,分别有什么优缺点。

  • 编程语言特性: Java 的字符串池是怎么实现的,垃圾回收的流程以及原理。

  • 关键字特性:包括 Java 中的 static,final,Python 中的 init 关键字的含义以及使用场景。面向对象的细节:类的封装,函数与变量继承,抽象类和接口有什么区别等。

  • 多线程与多进程:线程如何同步,进程如何同步,wait() 函数使用场景以及常用的并发编程模式。

2.算法基础

  • 算法题:链表操作,二分查找,动态规划,DFS,BFS 等(可以使用 Leetcode 来进行学习)。

  • 算法复杂度的分析:时间复杂度,空间复杂度,平均时间复杂度。

  • 数据结构的实现:实现二叉查找树,Trie 树。

基础的算法题,大厂都会考。刷算法题的时候,要把每道题都当成面试题一样按步骤完成,完成一题之后总结经验。这样遇到变形题也迎刃而解。这里我推荐 Leetcode 以及 Hackerrank。这里说一点题外话,可能有的同学有疑问,觉得这些平常工作都用不到,为什么还要花那么多时间在上面。其实不是的,第一,平常工作都能用到,无论从二分查找到复杂一点的前缀树。开发的过程中如果你知道这些算法/数据结构,就能根据自己的业务来选择最适合的算法/数据结构,减少整个项目的复杂度。 第二,数据结构和算法锻炼的是思维,刷算法题的时候,慢慢会学习到一些有趣的,巧妙的方法。它们能扩展你的编程时思考的范围。同时也要求你考虑到各种不同的边界情况。即使你不准备换工作,我也建议每天都刷一道算法题,日积月累,一年下来你的算法基础一定能比同龄人高出不少。而且当你真正理解算法题的知识之后,写程序 debug 和花在 Stackoverflow 的时间就会大大减少,往往知道哪里可能有问题并且能大幅地增加工作效率。

在这里插入图片描述
以上资源均免费分享给大家,内容均放在了文末,大家可以自行获取。

3.计算机网络

  • 协议的基础组成与用途:HTTP 协议中不同头部,方法,状态码的含义。

  • 协议的使用场景:DNS 协议,ARP 协议,SSH 命令的使用场景以及原理。

  • 不同协议的区别:TCP 与 UDP 的区别,HTTP 与 HTTPS 的区别。

  • 协议具体功能实现:TCP 三次握手原理,TCP 慢启动以及滑动窗口的原理与实现方式。

4.操作系统

  • 操作系统基础概念:进程,线程,虚拟内存,文件权限,信号量等概念考察。

  • Shell 的基础使用:ls, find, top, ps 等命令的应用与原理。

  • 常见功能的实现:进程调度,用户态与内核态的切换,各类系统调用的实现方式,epoll 的实现。

  • 常用函数的实现:memcpy,strcpy,strstr 等常用库函数的实现方式与优化。

3.积累项目经验

项目经验

项目经验这块因人而异,把觉得做的有亮点的东西挑出来,从四个方面来准备:

  • 功能模块的实现
  • 达到了什么效果
    -遇到了什么问题,是如何解决的
  • 涉及到的相关知识点

项目经验和知识点 其实是一个双向的过程,要 试图去找到它们之间的联系:

  • 谈到项目经验的时候,可以说:做完 xx 之后,我还去了解了一下 yy 背后的原理,xxx,这里体现的是 你是否有求知欲 。

  • 谈到知识点的时候,可以说:yy 的原理是这样的,在 xx 项目中我是如何应用它来解决问题的,这里体现的是 你是否具备把知识付诸实践的能力。

  • 开源项目 开源项目可以让你和世界上顶级的工程师一起工作,学习软件设计以及语言的高级使用方法。同时能让你理解软件是如何运行 / 设计的。

  • 参与较底层/偏向算法或研究的项目 如果求职者未来想从开发转向研究的岗位,那么就可以阅读一些相关学术论文,写相关的文章分析与工具。

  • 造轮子,实用工具 从学习的角度来说,造轮子可以说是最好的方法,不过要给自己一个期限,不能无止境地把时间花费在程序的细节与优化中。知道原理,能够实现就足够了。

  • 写论文,分享文章 如何宣传你的开源项目或者业余项目?写一篇优秀的文章介绍它。同理,要证明你有喜欢计算机,有研究的能力,最好的方法也是写一些优秀的文章以及论文。

  1. 模拟面试

如果你准备去面试一家非常喜欢的公司,那么面试之前,你应该先进行模拟面试,模拟面试的意思是让另外一名工程师充当面试官,按照该公司的题库以及流程对你进行面试,然后再把面试过程中的优点和缺点反馈给你。模拟面试既可以让你的朋友当面试官来面试你,也可以去找几家有类似岗位的公司。因为当你本来就没有一定要进该公司的想法,那么心态自然就能放轻松,带着轻松的心态去面试的话更能发挥好,给自己信心,同时也可以问问面试官自己哪里不足,可以加强的。经过总结后,锻炼自己面试的技巧,包括技术的基础,以及如何问问题。当你面试得多了,会发现问题其实都差不多,下次遇到也知道怎么回答了。你可以选择 Resumejob或者以英文为沟通语言的 Pramp 来训练。

5.选择公司

前几家公司的选择对你的职业规划会有很大的影响,大公司还是小公司,和你个人的性格或者职业规划有直接的关系:

大公司

优势

  • 入职薪酬较高,每年固定调薪,员工福利例如下午茶,文娱活动,年假都有保证。

  • 通常都有大牛,而且工程师比较多,总能遇到一些志同道合的朋友。

  • 跳槽到小公司比较容易,岗位也能得到提升。

劣势

  • 刚进去的时候接手的可能都是比较枯燥的小项目。

  • 可能需要维护几年前的没有文档没有测试的项目。(其实也能学习到很多)

  • 比较容易安逸,缺乏学习的动力。

小公司

优势

  • 相对来说,条条框框没那么多,偶尔迟到请假没什么关系。

  • 什么都能学到,从开发到运维到测试。

  • 项目可以加上自己的建议和想法,比较有成就感。

  • 能直接向老板汇报,升职速度比较快。

  • 万一上市了呢?(中国每天有一万家公司注册,上市的嘛…)

劣势

  • 入职薪酬比较低,员工福利嘛,不能保证。

  • 有大牛的可能比较少,除非你事先知道(所以面试问问题非常重要)。

  • 加班压力通常比较大,而且公司不一定会根据你的加班时间就涨薪。

  • 跳槽到大公司比较难,除非你有非常好的简历与能力。

在国内来说,除了一些很 geek 的小公司,一般的小公司并没有那么自由,加班也可能很多。所有我觉得一开始选择大公司往往是不错的选择,之后跳槽的选择范围也更多。

面试阶段

一. 整体流程

腾讯的部门很多,岗位类型有别,职级差异较大,因此,每个面试者的面试流程肯定不尽相同,然而,很多流程基本通用,故值得一看。

面试流程如下:

在这里插入图片描述

一图胜千言,要进腾讯并不那么容易。跟游戏升级一样,只有通过前一关,才有机会进入下一关。

微信部门的面试,要求更高,基本是2轮面委面,还有可能是3轮。当然,微信部门的钱也更多。

有的朋友问:组长是啥岗位?总监和总经理又是啥岗位?我们来简单介绍一下公开信息中的腾讯管理层级(副级别不单独列出):

在这里插入图片描述

看似层级不多,但要从下一层跨越到上一层,通常是五年十年之功,并不容易。可以算算,接近小马哥要多少年?

有的朋友还会问:面委是什么?面委就是面试委员会,会对面试者的能力进行再次考核,以便进行定岗定级。

通常来说,面试9级或9级以上的岗位,才需要面委。这里的9级是什么意思呢?且看公开信息中的腾讯技术通道职级体系(左旧右新):

在这里插入图片描述

一般来说,应届毕业生级别最低,组内骨干至少是9级工程师,组长至少是10、11级工程师,总监至少是12、13级工程师,依此类推。

接下来,我们来具体聊聊面试流程中的每个环节,仍以郭靖的社招面试流程为例,岗位是后台开发。

二. 简历筛选流程

第一步是要投递简历。筛选简历的是hr和业务部门。如果hr觉得简历不错,就会把简历给到业务部门。当然,业务部门也可以去人才库中找匹配的简历。

总之,简历的最终评判会落在业务部门身上。如果简历不通过,就没有下文了。如果简历通过,就有希望了。

三. 电话面流程

简历通过后,业务部门的组员或组长,会打电话给求职者,简要了解基本情况,也可能初步问一下技术和岗位方面的问题。

极端情况下,如果电话中发现求职者技术确实太水,啥都不会,尽是扯淡,那么就会让应聘人员等后续通知,然后就没有然后了。

然而,通常情况下,既然简历通过筛选,那么还是值得给予面试机会,这个电话的主要目的,是了解基本情况,并约=到腾讯面试。

四. 组员面流程

组员面试,不是100%必须的环节,然而有时候组长太忙,就会让组员先面试,探探路。

这个组员,一般是组内的骨干员工,职级通常是9级,很可能就是之前电话约面试的那个人。

五. 组长面流程

前面说了,组员面不是100%存在的环节,如果没有组员面,那么组员面的内容会在组长面时体现。

组长拿着的笔试试卷,就笔试题目进行发问,问完之后,还会问了别的技术问题。这个过程大致30分钟左右。

如果技术不行,就不会去浪费总监的时间了。然后,会告诉求职者回家等消息,那么,这种情况基本就表明面试不通过。

如果水平不错,组长就会让求职者稍微等一下,去请总监来面试。通常来说,组长会提前跟总监打招呼,说今天有人的来面试,让总监预留一些时间。

六. 总监面流程

总监对求职者继续进行深度发问,聊了很多技术和项目问题。

无论是否通过总监面,当天的面试通常都会结束。不会进行总经理面,因为总经理时间很难约。

七. 总经理面流程
总经理面,是最重要的一轮面试,在很大程度上,决定了求职者能否拿到最终的offer。

总经理会问了很多有深度的问题,也会问了一些宏观的问题,还要求在草稿纸上写了两个题目的程序。

八. 面委面流程

求职者按要求接入视频,参加面试。面委面试官继续对技术和项目进行深度发问,在系统方案设计方面的考查力度明显加大。

面委面的目的,是对人才进行再次把关,顺便进行职级定级。一般来说,面试9级以下的岗位,是不需要面委面的。

九. hr面流程

腾讯招人的成本是非常大的,前面那么多流程,只要求职者情商不要太差,基本没有问题的。

hr面试,问的就是一些基本信息和常规问题。说白了,hr面试,就是一个情商面试。关于hr面试的具体详情,会在后面的攻略部分详细阐述。

谈钱不伤感情,hr自然是要跟求职者谈钱的。基本的一番了解和沟通之后,求职者获得了hr的口头offer,也知道自己能拿多少钱了。hr补充说,后续会有电子offer发到邮箱。

十. 电子offer流程

求职者会如期收到邮件,是正式电子offer,内容包括钱和岗位,具体信息,就不说了。接下来,hr让求职者提供薪资证明和背景调查的基本信息。

腾讯拿到这些这些信息后,会委托第三方专门负责背景调查的公司,对求职者进行背景调查。

这里要强调一下,只有求职者愿意并同意加入腾讯,且同意开始接受背景调查,腾讯和背景调查公司才能发起对求职者进行调查。

十一. 背景调查流程

背景调查,是现在很多公司采取的策略,主要是为了保证人才质量,避免弄虚作假,降低企业招人风险。

背景调查,主要考察人品,那些还想在简历中写虚假信息的人,那些虚报当前工资的人,要注意啦。

不要有侥幸心理,背景调查公司,是干这个吃饭的,要调查求职者的背景资料,方法多得很。串通造假,难度太大,也不正直,自己想想。

总结阶段

一轮面试过来,可能筋疲力尽了。回想下自己哪里可以做得更好,简历哪里可以修改的。统计学告诉我们不要选择第一家面试的公司,多面试几家。不要欺骗自己,认真去思考每家的优点和缺点,和你的好朋友聊聊,寻求他们的建议。如果没有拿到 Offer 也没关系,重复上面的步骤,继续努力。

岗位内推、学习交流

我们大量需要Android开发岗位,内推可以直接找我们哟

如果你觉得自己学习效率低,缺乏正确的指导,可以加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧,十大进阶模块等你哟!

如果你觉得这篇文章帮助到你,希望我们继续分享求职经验的话,请帮我们点赞吧。👍

在这里插入图片描述

在这里插入图片描述

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 基础知识扎实:首先要打好计算机基础知识的基础,如数据类型、算法思想、时间复杂度等等。建议通过课程、书籍等途径系统地学习。 2. 刻意练习:对于数据结构与算法来说,刻意练习是很重要的。可以通过刷题、参加比赛等方式来提高自己的水平。 3. 多笔记:学习过程中,多笔记可以帮助巩固知识点,方便日后复习回顾。 4. 参加社区:在社区中可以与其他学习者交流,分享自己的学习心得,也可以从其他人的经验中学习到更多的知识。 5. 不断学习:数据结构与算法是一个不断学习的过程,需要不断地学习新的知识点,更新自己的知识储备。 关于如何正常使用力扣,可以参考以下几点: 1. 从简单到复杂:在刷题的过程中,建议从简单的题目开始,逐步提高难度,这样可以让自己逐渐适应力扣的题目难度。 2. 掌握基础知识:在刷题之前,先掌握一些基础的算法和数据结构知识,这样可以更好地理解题目,提高解题效率。 3. 多看题解:在力扣上,每个题目都有很多人提交过自己的解答,可以多看一些高赞的题解,从中学习新的解题思路。 4. 坚持刷题:在力扣上,坚持刷题是非常重要的,可以通过每天刷一定数量的题目来提高自己的水平。 5. 不要过于依赖代码:在刷题的过程中,不要过于依赖他人的代码,要尽可能地自己思考和解决问题,这样可以更好地提高自己的解题能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值