渣硕Android开发找工作都这么难了吗?千万不要轻易离职......

Posted 上马定江山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了渣硕Android开发找工作都这么难了吗?千万不要轻易离职......相关的知识,希望对你有一定的参考价值。

坐标北京,21年3月毕业工作,北京某大型互联网码农集散基地渣硕背景。

第一份工作在北京的一个80人左右规模的小公司做android,最近刚刚跳槽成功。

做Android是从19年中旬开始,毕业前的第一份工作和第二份工作都在规模不超过20人的小团队练级,毕业前本来有计划留杭州,也拿到不少心仪Offer,但是为了希望在北京工作的妹纸毅然来了北京,毅然的啥也没想的进了这家80人左右的小公司,原因按下不表,反正现在肠子都悔青了。

前段时间开始准备跳槽,拉钩海投,前前后后不下投了二三十家的高级Android岗,给我最大的感受就是,现在卡年限真的很严——公司不会关心你开始以全职方式做Android是从什么时候开始,而是简单粗暴地计算你毕业到现在工作了多久。

所以很遗憾的虽然我从19年中旬开始就利用读研期间实验室管理松散的优点到处实习累积经验,最后一份工作也是从20年9月到现在差不多一年半的时间,但是人家HR就认你毕业到现在,只工作了一年,那你就是个一年经验的中低级Android,这样的结果就是基本上所有非内推的大厂投出去的简历都挂了,几乎所有内推的高级岗也都挂了。

很难受,但是这就是事实——找工作的人太多,拿年限卡人就是第一道关口,连第一道口都过不去,你拿什么去换工作?

不过好在还有些小公司不那么care年限的事,在我拿到的仅有的一些数百人、千人规模的中小厂的面试机会上面,除了字节因为需要的技术栈不匹配导致面试失败之外,其余只要面试过的都拿到了offer,title / 薪资涨幅也符合我的预期——这或多或少也算给我增加了一些信心,至少在「纯技术」方面,感觉只要给我个面试机会,怎么着都可以跟你好好说道说道,也算是各种不顺里面的一些开心的地方吧,叹气。

不过,最后找到真正满意的工作还是靠的内推……其中的过程曲折就不细讲了,只能说,认识一些靠谱的喷油是多么的重要就是了,比心。所以,如果你准备跳槽,好好联系一下你的在别的团队的小伙伴,如果你们关系够铁,那请不要犹豫了,直接上内推,流程更简单不说,拿了offer你的老铁还能有奖金,爽的一批。

这期间因为离职,也负责前公司的Android招聘。前公司虽然规模不大,但拉钩上JD一挂,也是每天近百封简历的规模,可能是Android的失业人口太多了吧,供需严重不平衡……但是简历虽多,质量却非常堪忧……少有的被HR筛选出来的简历,能够成功约上面试的,要么是「之前干外包,什么都会一点,但是原理都不太了解」,要么是「我之前在大团队做事,只会做业务,原理啥的不太了解」,要么就是「我精通XXX技术,了解XXX原理,干过前后端,当过CTO」结果约来面试连ListView的回收机制都聊不上来,总之质量上是非常闹心。

我这么说的意思是,可能市面上Android程序员确实非常多,自己自学转的、大厂业务团队出来的、应届毕业的等等等等,但是,质量真的普遍不高,真正优秀的Android程序员,对于中小型团队其实还是很稀缺的。

真正优秀的Android程序员是什么样的呢?在我看来,至少得满足以下条件,才能够算得上「优秀」:

  • 对于Android的基础知识足够牢靠

  • 对于Android相关的知识面足够广

  • 对于Android相关底层设计、概念至少有过了解

  • 对于「软件设计」有自己的想法和方法论

  • 对于「编程」具有良好的习惯

  • 易于交往,不是团队气氛破坏者

看上去似乎没那么难?似乎JD里面都会这么写不是吗?但是你又做到了多少呢?每个人都可以这么问问自己。

所以,如果是因为年限问题大公司去不了,其实可以换个思路,一些小而美的团队其实可以是个思路。但是即便是小团队,给你面试机会,你能不能过,那也得看你平时的积累以及面试前的准备。

以上列举的一些条件真的是必要条件,如果这些标准都达不到,那我觉得还是尽量别着急跳槽,好好在原来的公司呆着好好修炼一下自己再说吧。

总结一下

在2022年,Android程序员市场进一步饱和,如果你只是个「会写点业务」的程序员,请继续留在你的上家公司好好修炼,别裸辞了;如果你觉得你能力足够胜任但受限于年限不够,可以考虑中小型团队以及内推;如果你觉得你足够优秀并且年限也足够,那就直接奔着最好的那几家公司去吧,坑位足够。

最后,分享一份我在GitHub上看到的已经标星6.8K的大厂面试题,希望能帮到在这条路上一路走到黑的朋友:

这份资料包含了Java和Android两大部分,由于篇幅原因,这里只展示部分知识点,有需要的朋友直接滑到文末免费领取。【保证100%免费】

第一章 Java 方面

  • 第一节 Java 基础部分
  • 第二节 Java 集合
  • 第三节 Java 多线程
  • 第四节 Java 虚拟机

第二章 Android 方面

第一节 Android 四大组件相关
  • Activity 与 Fragment 之间常见的几种通信方式?
  • LaunchMode 的应用场景?
  • BroadcastReceiver 与LocalBroadcastReceiver 有什么区别?
  • 对于 Context,你了解多少?
  • IntentFilter是什么?有哪些使用场景?
  • 谈一谈startService和bindService的区别,生命周期以及使用场景?
  • Service如何进行保活?

第二节 Android 异步任务和消息机制
  • HandlerThread 的使用场景和用法?
  • IntentService 的应用场景和使用姿势?
  • AsyncTask的优点和缺点?
  • 谈谈你对 Activity.runOnUiThread 的理解?
  • 子线程能否更新UI?为什么?

第三节 Android UI 绘制相关
  • Android 补间动画和属性动画的区别?
  • Window和DecorView是什么?DecorView又是如何和Window建立联系的?
  • 简述一下 Android 中 UI 的刷新机制?
  • LinearLayout, FrameLayout,RelativeLayout 哪个效率高, 为什么?
  • 谈谈Android的事件分发机制?
  • 谈谈自定义View的流程?
  • 针对RecyclerView你做了哪些优化?
  • 谈谈如何优化ListView?

第四节 Android 性能调优相关
  • 谈谈你对Android性能优化方面的了解?
  • 一般什么情况下会导致内存泄漏问题?
  • 自定义 Handler 时如何有效地避免内存泄漏问题?
  • 哪些情况下会导致oom问题?
  • ANR 出现的场景以及解决方案?
  • 谈谈Android中内存优化的方式?
  • 谈谈布局优化的技巧?
  • Android 中的图片优化方案?

第五节 Android 中的 IPC
  • 请简要谈谈Android系统的架构组成?
  • SharedPreferences 是线程安全的吗?它的 commit 和 apply 方法有什么区别?
  • Serializable和Parcelable的区别?
  • 请简述一下 Android 7.0 的新特性?
  • 谈谈ArrayMap和HashMap的区别?
  • 简要说说 LruCache 的原理?
  • 为什么推荐用SparseArray代替HashMap?

第六节 Android 系统 SDK 相关
  • 请简要谈谈Android系统的架构组成?
  • SharedPreferences 是线程安全的吗?它的 commit 和 apply 方法有什么区别?
  • Serializable和Parcelable的区别?
  • 请简述一下 Android 7.0 的新特性?
  • 谈谈ArrayMap和HashMap的区别?
  • 简要说说 LruCache 的原理?
  • 为什么推荐用SparseArray代替HashMap?
  • PathClassLoader和DexClassLoader有何区别?

第七节 第三方框架分析
  • 谈一谈LeakCanray的工作原理?
  • 谈一谈EventBus的原理?
  • 谈谈网络请求中的拦截器(Interceptor)?
  • 谈一谈Glide的缓存机制?
  • ViewModel的出现是为了解决什么问题?并简要说说它的内部原理?
  • 请说说依赖注入框架ButterKnife的实现原理?
  • 谈一谈RxJava背压原理?

第八节 综合技术
  • 请谈谈你对 MVC 和 MVP 的理解?
  • 分别介绍下你所知道Android的几种存储方式?
  • 简述下热修复的原理?
  • 谈谈如何适配更多机型的?
  • 请谈谈你是如何进行多渠道打包的?

第九节 数据结构方面
  • 什么是冒泡排序?如何优化?
  • 请用 Java 实现一个简单的单链表?
  • 如何反转一个单链表?
  • 谈谈你对时间复杂度和空间复杂度的理解?
  • 谈一谈如何判断一个链表成环?

第十节 设计模式
  • 请简要谈一谈单例模式?
  • 对于面向对象的六大基本原则了解多少?
  • 请列出几种常见的工厂模式并说明它们的用法?
  • 说说项目中用到的设计模式和使用场景?
  • 什么是代理模式?如何使用?Android源码中的代理模式?
  • 谈一谈单例模式,建造者模式,工厂模式的使用场景?如何合理选择?

第十一节 计算机网络方面
  • 请简述 Http 与 Https 的区别?
  • 说一说https,udp,socket区别?
  • 请简述一次http网络请求的过程?
  • 谈一谈TCP/IP三次握手,四次挥手?
  • 为什么说Http是可靠的数据传输协议?

第十二节 Kotlin方面
  • 请谈谈Kotlin中的Coroutines,它与线程有什么区别?有哪些优点?
  • Kotlin中该如何安全地处理可空类型?
  • 说说Kotlin中的Any与Java中的Object有何异同?
  • Kotlin中的数据类型有隐式转换吗?为什么?
  • Kotlin中集合遍历有哪几种方式?

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、 丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

朋友们如果需要这份完整版的资料合集,点击文末CSDN官方认证微信卡片免费领取!!!保证100%免费!!!

以上是关于渣硕Android开发找工作都这么难了吗?千万不要轻易离职......的主要内容,如果未能解决你的问题,请参考以下文章

Android 开发一比一年难做!面试题都这么难了

Android开发者,关于性能优化几大点,你都了解了吗?

Android开发真的凉了吗?

程序员千万不要裸辞,对你没有任何好处

新手学习单片机最常见的六大误区,你进坑了吗?

千万不要用新技术重新开发一次啊