程序员成为“备胎”的5年,我一直在等...(外包——字节跳动)

Posted Android725

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员成为“备胎”的5年,我一直在等...(外包——字节跳动)相关的知识,希望对你有一定的参考价值。

自我介绍

双非二本,软件工程

喜欢编程,古风,日语和英语。

求职期间写了一个小博客,感兴趣的可以看看

GitHub

为什么离职?

这个问题,几乎我参加的每一场面试都会问到。我是2015.7.1毕业,最后离职日期是2020.12.18。这段工作经历很短,被问到也很正常。最主要原因还是追求更大的发展空间和技术突破。

在我导师跳槽去美团后,团队内就出现了明显的技术断层。我遇到的某些问题,能够与之商量的同事也越来越少。至于源码,数据结构和算法层面的交流就更少了。

而这些深层次的东西,才是真正意义上的技术栈,是真真正正能提高个人技术能力和核心竞争力的东西。

跳槽前该考虑的事?

在我看来,决定是否跳槽成功的核心因素有两个:个人技术能力和当前招聘市场的大环境。建议先将自身技术能力和招聘要求做一个比对,如果觉得可以胜任,再去投递也不迟。至于市场环境,大概是金三银四,金九银十和年末扩招三大阶段吧。

如果技术已经准备ok,简历也完善过,那就可以开始投递了。内推也好,其他招聘软件也好,自行选择即可。

最最最重要的一件事,不建议裸辞。如果裸辞,做好心理准备。大多数情况下,换一份满意的工作,整个面试流程加offer审核到offer call再到最终邮件offer,耗时一个月是很正常的。在职面试都会有焦虑感,更何况是裸辞。

如果工作年限很短,又是裸辞,那我只能说在简历筛选上会很吃亏。比如我,投字节15个岗位,都被干掉,到第16个才约上面试。投快手4次内推,被干掉4次,最快的一次一小时左右就把我干掉了。不得不说,快手效率还是到位的。不死心的我又投了第五次,成功约上了面试。至于后来为什么能再约上猿辅导,百度,58同城,去哪儿网,美团的面试,我猜应该都是因为运气…又或者,实在很缺人?

字节跳动面试经历

一面

  1. java有哪些集合
  2. Set, List, Map都有哪些实现类,有什么区别
  3. ArrayList和LinkedList区别
  4. HashMap原理,put时怎么判断key是不是null
  5. gc的几种算法
  6. 如何识别是不是垃圾(引用计数器,可达性分析),引用计数法有什么问题,gc root有哪些
  7. java为什么采用可达性分析不用引用计数器
  8. java中多线程怎么通信的
  9. synchronized和volatile区别
  10. sleep()和wait()的区别
  11. 讲一下https
  12. 编程中用https发请求和http有啥不同吗
  13. 写过Socket吗
  14. http请求有哪些方式,get/post区别
  • 编程题:找出数组中,升序子数组长度top2的数组

二面

  1. java的4种引用方式
  2. finalize()作用
  3. 写一个双重检验的单例模式,这样就能保证线程安全了吗,怎么解决
  4. volatile原理,了解ReentrantLock吗
  5. http1.0, http1.1, http2的区别
  6. http状态码
  7. 如何关闭http连接
  8. try catch finally怎么用,一般什么时候用finally
  9. 还了解什么设计模式
  • 编程题:找出岛屿个数,leetcode第200题

这个编程题我没写出来,面试官引导了将近一个小时也没写出来,然后居然过了。。

三面

  1. 从List中删除指定元素(有重复),要求只用list接口的函数(就是考察对list的熟悉程度,不是算法题)
  2. 重载和重写的区别
  3. 多态的原理
  4. 项目中的难点
  • 编程题:从非降序数组中找出第一次出现的target元素下标
    int[] array = {1,2,2,2,3,3,5,6,8}, int target =2

需要答案可以查看我的【GitHub

技术方面该如何准备?

结合我20多次的面试经验,总结出一个核心:基础。即便是大厂,也不会忽略问基础,反而更重视这个。基础不稳,地动山摇。基础稳如狗,大厂随便走。以下我提到的资料都会在文末给出链接,大家可自行查看。

面试知识点

  • 思维脑图

  • Android面试过程所需要掌握的技术

一场面试都有一个流程,拿android面试来说,面试内容不可能全是Android问题,里面应该会有编程基础相关的问题。我对Android面试中的问题做了下分类,如下所示:

一般来说,一个Android应用开发岗位是不需要太强的数据结构和算法的,但是这并不意味着候选者可以完全不懂数据结构和算法,所以数据结构和算法大家还是要稍微了解下,由于它不是必须的,所以就算面试过程中回答的不好也没关系,只要后面的Java、Android相关的问题能够完美回答就好。有同学和我反馈,说面试挂在了数据结构和算法,这在社招中应该是不多见的,这多半是因为Android的问题也没有很好地回答出来,这就是社招和校招的不同之处,校招看基础,社招看技术深度和业务。

关于设计模式和架构,其实中高级面试对这个的要求并不是特别高,熟悉下常见的设计模式基本就ok,比如单例模式、工程模式、观察者模式等。

接下来主要描述下面试过程中对Android技术的要求。在我对Android的理解这篇文章中,我对Android的技术类别做了一下划分,如下所示

对于大部分面试者来说,大家的目标岗位应该是中高级,中级岗位(百度T4)需要掌握的知识点是:基本知识点、深入知识点;高级岗位(百度T5)需要掌握的知识点是:基本知识点、深入知识点、基本知识点的细节和系统核心机制。

1. 基本知识点
比如四大组件如何使用、如何创建Service、如何进行布局等。这类知识是需要熟练掌握的,并且也没什么难度。

2. 稍微深入的知识点
比如AIDL、Binder、多进程、View的绘制流程、事件分发、消息队列等。这类知识对于高级开发者来说也是必须掌握的,然而相信很多候选者在面试之前并不能对这些问题了如指掌。这些问题基本都是面试过程中很常见的问题,也是高级岗位所必须掌握的问题,不搞定这些问题无法达到百度的高级工程师的标准,因此也不可能通过面试。

3. 基本知识点的细节
比如Activity的启动模式和标记位、Service同时处于start和bind状态时的停止问题、AsyncTask的同步异步问题以及使用时的限制等,这种问题还有很多。这类知识点,大家在开发过程中可以并不会去注意,这会导致一个问题,那就是开发应用没问题,但是在面试时面试官只要稍微问下细节或者特殊情况,就hold不住了。 这类问题也是高级开发者所需要掌握的,有些面试官喜欢问一些看似刁钻的问题,但是候选者如果回答不了也是不好的。

4. 系统核心机制
比如主线程的消息循环、主线程如何和AMS如何跨进程交互、SystemServer进程中的各种Service的工作方式、AsyncTask的工作原理等。这类知识对于高级开发者也是建议掌握的,因为它们可以让开发者理解Android的运行体系。 这类问题并不是所有的Android面试都会涉及到,但是技术含量高的大公司有可能涉及此类问题。

5. 琐碎的知识点
此类知识点我把它们定义为一些重要但是没有什么技术难度的问题,比如如何打开一个网页、如何打电话、如何发短信、如何定位、多点触控等,这类问题往往不好记忆,但是需要的时候去查一下就能立马搞定。这类问题基本上不会出现在面试过程中。

尾声

最近小编在大神哪里买下了几十套阿里、头条、腾讯和美团等公司2020-2021年金三银四的面试题,把技术点整理成了视频+文档(总计20G,实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

这份资料尤其适合:

1.没有工作经验,但基础非常扎实,对Android工作机制,常用设计思想,常用Android开发框架掌握熟练的。
2.具有一定工作经验的,但面对目前流行的技术不知从何下手,需要快速提升核心竞争力的人群。
3.在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以报名。
4.想了解“一线互联网公司”最新招聘需求/技术要求,对比找出自身的长处和弱点所在,评估自己在现有市场上的竞争力如何;
5.做了几年Android开发,但还没形成系统的Android知识体系,缺乏清晰的提升方向和学习路径的程序员

相信它会给大家带来很多收获。(更全的内容和资料,在文末获取)
Android面试题(部分展示)

  • 精华Android 初级-高级学习进阶思维脑图(有几百个细分支,系统学习)

  • 学习笔记(只展示部分)

  • 大厂面试笔记(包含面试题+解析+面试HR必备知识+学习Android基础—高级知识点)

我的学习笔记和每个阶段该学的知识都放在以下的学习思维脑图里了,因为是跨专业所以知识点很细,也算比较全,需要的可以自己保存下载,如果需要xmind版本的,自己添加学习知识点的,可以查看我的【GitHub】免费分享给你!(笔记是对应思维脑图的,每个知识点细节都有详细讲解,需要的同样查看我的GitHub我分享给你)

需要的可以 思维脑图和对应学习笔记的朋友,点击获取

https://jq.qq.com/?_wv=1027&k=ELs9hPI2

总结

如果你对自己的智商,解决问题的能力,钻研的态度,有信心,it行业非常适合你;能力锻炼出来了,工资就高,不停的抛出问题给你解决,让你有成就感;技术水平随着时间积累,越到后期越强;那你赶紧去报班/自学,从实习生做起,3年之后自然NB;如果你想混(钻研精神不足),真的会很惨;半辈子没挣得什么像样的资产(初级程序员工资真心不高),长期加班熬夜落下一身病,然后40岁除了编程啥也不会,编程还贼菜,在小公司厮混业务代码,老板说不定什么时候就说散伙,然后和小伙子们竞争初级程序员岗位。。。。。;

坚持8年的老前辈的经历告诉我,在错误的方向上,越坚持越受伤;

以上是关于程序员成为“备胎”的5年,我一直在等...(外包——字节跳动)的主要内容,如果未能解决你的问题,请参考以下文章

程序员成为“备胎”的5年,我一直在等...(外包——字节跳动)

程序员成为“备胎”的5年,我一直在等...(外包——字节跳动)

“备胎”5年,我一直在等...(外包——字节跳动)

外包干了5年,寄了

荣誉体验官,TiDB 5.0 在等你!

测试外包干了5年,感觉自己已经废了····