大家好,欢迎来到IT知识分享网。
作者:程军
最近有位北京的小公司程序员说自己最近投了多个大厂简历,但是结果却非常不尽人意。
80% 的大厂没有任何回应,有几个回应的问了几个问题然后就没有然后了,比如你公司多大规模?公司的技术团队多大?只有寥寥无几的公司给了面试机会,但是都是一面挂,感觉自己工作 7 年了,技术也不差呀,咋就因为自己在小厂被大厂一次又一次鄙视了呢。
在听完这位朋友的诉苦之后,想起我曾经在小公司也有一样的窘境,今天就来聊一聊这个话题。
一、为什么小厂的程序员会被鄙视?
其实这个问题很容易解释,原因就两个:其一是小厂业务/用户体量小,其二是小厂需要你什么都会(广度可以)但是深度有限。
针对第一个原因,小公司做技术无外乎是项目或者产品,众所周知,做项目对人的成长会比较慢,因为一个项目交付了然后就没有后续了或者反馈周期很长。而对于产品,通常情况下小厂的业务体量/用户量相对大厂要小得多,所以程序员不用使用太高深的架构/性能优化就能轻松应付业务高峰/增长的压力。
针对第二个原因,本质还是因为小公司分工没那么细/真正的人才也相对少,所以才会出现程序员在专业领域广而不精的结果。
怎么办?我们继续。。。
二、小厂程序员如何破局?
我也曾经在小公司,我把我的经验分享给你,主要就是如下三个关键点:
a、为什么要去大厂?
这里最核心的原因就是因为大厂有头部效应,且因为拥有更大的品牌/资本/人才/护城河,所以大厂会越来越强,而小厂想成为大厂是非常小的低概率事件,一句你熟悉的话总结:选择比努力更重要!
通常来说,个人要快速成长需要这三个要素:方法论 + 刻意练习(目标 + 专注 + 找位好的老师 + 复盘和改进) + 富有不断挑战的/复杂的业务实操场景,但是这些在小厂里只能满足一个条件或者一个都没有,这是导致很多程序员在小厂成长缓慢的根本原因。
b、多步策略
为了更好地说明问题,我们先来定义一下头部,所谓的头部就是你所在的赛道里的高价值且有优势的领域。所以,如果你在小公司,你通常在如下图的三/四象限。
那么,你要做的是逐步从三/四象限迁移到第二然后第一象限,这并不是一步就可以完成的。这就是我说的多步策略,有一些朋友身在第三/四象限妄想一步迁移到第一象限是很难的,请使用多步策略,螺旋式上升原则,我相信这个问题就迎刃而解了!
c、内求和外索
最后一个要聊的是,我们在专业能力/认知提升过程中,一定要学会「内求」和「外索」。
所谓的内求就是先在公司内部找到你所在领域的高手,向他们学习,当然人家不会轻易教你,多注意方法,毕竟是人家吃饭的东西也是多年经验之谈,至少先主动和别人做朋友吧。多做一些对别人有帮助的事,这样别人才能有理由来帮助你。
当然,也有可能在你所在的公司里专业能力比你强的人不多或者没有了,这个时候就需要「外索」并打开自己,也就是找到公司之外的高手,不要傻兮兮加了人家大佬的微信就说我要跟你学习,还不怎么认识就各种问题不断,这种行为真的很傻。一般来说大佬一般都很忙,哪有时间和你闲聊天,系统化的教你那就更不可能了,所以我建议主动付费咨询/付费学习。
真正的知识和一线的实战经验书面里学不到,在如今这个社会,就是很值钱,当对你很纠结的问题在别人那已经研究了一百遍了,用钱/大佬喜欢的东西换自己成长的速度,这个买卖真的很划算。
像之前我根据各大博客的大佬输出整理了一些技术资料和面试题集,供大家提升进阶。
从面试简历模板到大厂面经汇总,从大厂内部技术资料到互联网高薪必读书单,以及Android面试核心知识点(844页)和Android面试题合集2022年最新版(354页)等等这些资料整理给大家,希望踩过的坑不要再踩,遭遇技术瓶颈一次性消灭。
如果需要的话,可以顺手帮我点赞评论一下,直接私信我【笔记】免费领取
部分内容展示
01.Android必备底层技术:
- Java序列化:Serializable原理、Parcelable接口原理、Json、XML
- 注解、泛型与反射:自定义注解、注解的使用、泛型擦除机制、泛型边界、Java方法与Arm指令、Method反射源码、invoke方法执行原理
- 虚拟机:JVM垃圾回收器机制、JVM内存分配策略、Android虚拟机与JVM底层区别、虚拟机底层Odex本地指令缓存机制、虚拟机如何分别加载class与object、虚拟机类加载模型
- 并发:Java线程本质讲解、线程原理、线程通信、UnSafe类、线程池
- 编译时技术:OOP面向切面之AspectJ、字节码手术刀JavaSSit实战、字节码插桩技术(ASM)实战
- 动态代理:动态代理实现原理、动态代理在虚拟机中运行时动态拼接Class字节码分析、ProxyGenerator生成字节码流程
- 高级数据结构与算法:HashMap源码、ArrayList源码、排序算法
- Java IO:Java IO体系、IO文件操作
02.Framework:
- Binder:Linux内存基础、Binder四层源码分析、Binder机制、Binder进程通信原理
- Handler:Loop消息泵机制、Message解析
- Zygote:init进程与Zygote进程、Zygote启动流程、Socket通信模式、APP启动过程
- AMS:ActivityThread源码分析、AMS与ActivityThread通信原理、Activity启动机制
- PMS:PMS源码、APK安装过程分析、PMS对安装包的解析原理
- WMS:PhoneWindow实例化流程、DecorView创建过程、ViewRootImpl渲染机制
03.Android常用组件:
- Activty:Activity管理栈与Activity的启动模式、Activity生命周期源码分析
- Fragment:Fragment生命周期深入详解、Fragment事务管理机制详解、性能优化相关方案
- Service:Service启动模式分析、Service管理与通信方案、Service生命周期底层详解
04.高级UI:
- UI绘制原理:setContentView()方法下到底做了什么、AppCompatActivity与Activity的区别、UI测量、布局、绘制的底层执行流程
- 插件换肤:LayoutInflater加载布局分析、Android资源的加载机制、Resource与AssetManager
- 事件分发机制原理:事件执行U形链与L形链、事件拦截原理
- 属性动画:VSYNC刷新机制、ObjectAnimator与ValueAnimator源码讲解、Android属性动画:插值器与估值器
- RecycleView:布局管理器LayoutManager详解、回收池设计思想、适配器模式原理
- 高阶贝塞尔曲线
05.Jetpack:
- Lifecycle:Lifecycle源码、Lifecycle高阶应用
- ViewModel:ViewModel源码、ViewModel应用技巧
- LiveData:LiveData源码
- Navigation:Navigation源码
- Room:Room源码、Room+LiveData监听数据库数据变更刷新页面原理
- WorkManager内核
- Pagging原理
- DataBinding:单向绑定、双向绑定、如何与RecyclerView的配合使用、底层原理
06.性能优化:
- 启动优化:系统启动原理、Trace工具分析启动卡顿、类重排机制、资源文件重排机制
- 内存优化
- UI渲染优化:UI层级规范及对UI加载的影响、UI卡顿原因及修复、UI绘制、布局、测量原因以及处理方案
- 卡顿优化:造成卡顿的原因分析、内存抖动与GC回收、回收算法
- 耗电优化
- 崩溃优化:项目崩溃异常捕获、优雅的异常处理方案、如何避免异常弹框
- 安全优化:APP加固实现(防反编译,dex加固)、https防抓包机制(数据传输加载,客户端服务器端双向加密校验)
- 网络优化:serializable原理、parcelable接口原理、http与https原理详解、protbuffer网络IO详解、gzip压缩方案
- 大图加载优化:Glide巨图加载机制原理分析、大图多级缓存实现方案
- 多线程并发优化
- 储存优化:Android文件系统-sdcard与内存存储、Shared Preference原理、MMAP内存映射
- 安装包优化:shrinkResources去除无用资源、合理设置多语言、webp实现图片瘦身、合理配置armable-v7的so库、Lint检查工具实践
如果需要的话,可以顺手帮我点赞评论一下,直接私信我【笔记】免费领取
07.音视频:
- C/C++:数据类型、数组、内存布局、指针、函数、预处理器、结构体、共用体、容器、类型转换、异常、文件流操作、线程
- H.265/H.265:音视频格式封装原理、编码原理、视频流H264的组装原理切片NAL单元、视频流H264码流分析、切片与宏快,运动矢量、信源编码器、高频滤波、帧间拆分与帧内预测、CTU,PU TU编码结构、DSP芯片解码流程、MediaPlayer与DSP芯片交互机制、投屏架构、MediaProjection与MeidiaCodec交互机制、H265码流交换
- MediaCodec:dsp芯片、编解码器的生命周期、解码器中输入队列与解析队列设计思想、MediaCodec中平缓解码解析、MediaExtractor 多路复用、MediaMuxer合成器、MediaFormat格式
- 音视频剪辑:视频剪辑、音频剪辑、音频合成、音谱显示、视频倒放
- 音视频直播:硬编码、软编码、native实现rtmp推流、摄像头预览帧编码NV21转YUV、视频画面封装拼接Packet包、音频流数据拼接Packet包、RtmpDump实时同步发送音视频数据、MediaProjection、Medicodec编码H264码流、rtmp推流
- OpenGL与音视频解码:OpenGL绘制流程、矩阵、Opencv详解、人脸识别效果实现
- OpenGL特效:CPU与GPU运行机制详解、世界坐标,布局坐标,与FBO坐标系、图像镜像与旋转处理、人脸定位与关键点定位、大眼效果、贴纸效果、美颜效果
- FFmpeg万能播放器:FFmpeg结构体、声音播放原理、Surface的渲染、像素绘制原理与对齐机制、音视频同步原理、视频播放器整体架构
- Webrtc音视频通话:WebRtc服务端环境搭建与Webrtc编译、1v1视频通话实现方案、群聊视频通话实现思路、多对多视频会议实现、1V1音视频通话实现
08.开源框架原理:
- Okhttp
- Retrofit
- RxJava
- Glide
- Hilt
- Dagger2
- EventBus
- 组件化、插件化、热修复等
09.Gradle:
- Groovy语法
- Gradle Android插件配置
- Gradle实践等
10.kotlin:
- Kotlin语法
- 扩展使用
- 进阶使用
- 实践等
11.Flutter:
- Dart语法
- UI
- 进阶使用
- 优化
- 实践等
12.鸿蒙:
- Ability组件
- 分布式任务
- 事件总线
- 鸿蒙线程
- UI自定义控件等
如果需要的话,可以顺手帮我点赞评论一下,直接私信我【笔记】免费领取
Android路漫漫,共勉!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/44200.html