0
点赞
收藏
分享

微信扫一扫

三本大龄程序员,失业半年,面试22家公司,成功收获4个offer,涨薪10%

前言

三本毕业的我,已经30岁了,从今年一月份中旬阳了后,在家休息了五天,此时对公司的心情还是感恩的那种,心想疫情这么久,还能有份工作,还算满足,于是准备回公司好好为公司效力。

天不遂人愿,一到公司还没好好干两天,公司就开始大刀阔斧的裁员30%。

开始我认为裁不到我,因为自认为在公司这一块业务是最熟悉的,平时也是自己在主导,事实让这种想法变得如此可笑,当企业的业务萎缩的时候,没有谁是不可替代的。

最开始感觉不妙的,是对领导撤回的一条消息的捕风捉影,果不其然在当天快下班的时间,被通知叫去谈话,看到消息就已经知道怎么回事了,也没多想,那时直接想的就是怎么谈赔偿,公司给13万,自己不满意加了1万,按照n+1的应该再多1万,抽空去洗手间也咨询了律师的朋友,说这给还算可以了,不想浪费时间就不扯皮了,拿钱走人。

然后谈完,企业微信直接删掉,电脑锁死,直接收拾东西走人,整个过程一个小时,也是相当快。

年后,开始准备简历,放开简历后,外包打招呼多的让你怀疑找工作如此简单,简历隐藏后,真正自己投的这种基本都是已送达的状态,就是已读的,也很少要附件简历,有个别的面试机会,问的东西也是相当刁难人,最扯淡的就是问你这个功能的哪个类哪个方法。

离开ide有哪个程序员能写好代码,现在面试官还真把自己当成了官。问个底层原理,项目经验就差不多了得了,这搞的就是没有诚意招人。也可能是我能力的问题吧。目前的心态也是有点差了,开始想着转行,但是转行之路依然迷茫。。。

所以我还是坚持下来了继续投简历,在这几个月陆陆续续也面试了十几家公司,皇天不负有心人,收到4个offer,成功涨薪10%,下周入职。

各位铁子们,坚持就是胜利,干就完了!!!

三本大龄程序员,失业半年,面试22家公司,成功收获4个offer,涨薪10%_Java

让“努力”成为自己的背景(如何学习?)

1、看视频进行系统学习

这几个月的面试经历,让我明白自己真的算是菜鸡中的战斗机,认清自己的问题,技术零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

2、进行系统梳理知识,提升储备

客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

三本大龄程序员,失业半年,面试22家公司,成功收获4个offer,涨薪10%_Java_02

系统学习方向:

  • 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO
  • Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化
  • 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化
  • 解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack
  • NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发
  • 微信小程序:小程序介绍+UI开发+API操作+微信对接
  • Flutter:Flutter入门+Flutter进阶
  • Kotlin: Kotlin入门教程 +Kotlin 实战避坑指南 +项目实战《Kotlin Jetpack 实战》
  • 三本大龄程序员,失业半年,面试22家公司,成功收获4个offer,涨薪10%_Java_03

3、读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

三本大龄程序员,失业半年,面试22家公司,成功收获4个offer,涨薪10%_Java_04

4、面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也整理了一套系统的面试题,帮助你举一反三:

三本大龄程序员,失业半年,面试22家公司,成功收获4个offer,涨薪10%_Kotlin_05

Android方面

  • 试从源码角度分析Handler的post和sendMessage方法的区别和应用场景?
  • 谈谈Android的事件分发机制?
  • 谈谈自定义View的流程?
  • 谈谈你对Android性能优化方面的了解?
  • 自定义 Handler 时如何有效地避免内存泄漏问题?
  • 谈谈Android中内存优化的方式?
  • 谈谈你是如何优化App启动过程的?
  • 请回答一下Android进程间的通信方式?
  • 请简要谈谈Android系统的架构组成?
  • 请简述一下 Android 7.0 的新特性?
  • 什么是冒泡排序?如何优化?
  • Activity 与 Fragment 之间常见的几种通信方式?
  • 对于 Context,你了解多少?
  • 谈一谈startService和bindService的区别,生命周期以及使用场景?
  • 简单介绍下ContentProvider是如何实现数据共享的?
  • 说下切换横竖屏时Activity的生命周期?
  • 说说Activity加载的流程?
  • HandlerThread 的使用场景和用法?
  • 谈谈 Handler 机制和原理?

Java相关方面

  • 分别讲讲 final,static,synchronized关键字可以修饰什么,以及修饰后的作用?
  • Java 中深拷贝与浅拷贝的区别?
  • 什么是反射机制?反射机制的应用场景有哪些?
  • 谈谈如何重写equals()方法?为什么还要重写hashCode()?
  • 请说一下HashMap与HashTable的区别
  • 谈一谈ArrayList的扩容机制?
  • 请简述 LinkedHashMap 的工作原理和使用方式?
  • Java 中使用多线程的方式有哪些?说一下线程的几种状态?
  • 谈谈线程死锁,如何有效的避免线程死锁?
  • 什么是线程池?如何创建一个线程池?
  • 谈一谈JAVA垃圾回收机制?
  • JVM中类的加载机制与加载过程?
  • JVM、Dalvik、ART三者的原理和区别?
  • JMM是什么?它存在哪些问题?该如何解决?

算法方面

  • 如何运⽤⼆分查找算法
  • 如何⾼效解决接⾬⽔问题
  • ⼆分查找⾼效判定⼦序列
  • 如何去除有序数组的重复元素
  • 如何寻找最⻓回⽂⼦串
  • 如何⾼效进⾏模幂运算
  • 如何运用贪心思想广域玩跳跃游戏
  • 如何⾼效判断回⽂链表
  • 如何在无线序列中随机抽取元素
  • 如何判定括号合法性
  • 如何寻找缺失和重复的元素
  • 请说一说HashMap,SparseArrary原理,SparseArrary相比HashMap的优点、ConcurrentHashMap如何实现线程安全?
  • 请说一说HashMap原理,存取过程,为什么用红黑树,红黑树与完全二叉树对比,HashTab、concurrentHashMap,concurrent包里有啥?
  • 请说一说hashmap put()底层原理,发生冲突时,如何去添加(顺着链表去遍历,挨个比较key值是否一致,如果一致,就覆盖替换,不一致遍历结束后,插入该位置) ?

Android Framework方面

  • 你了解Android系统启动流程吗?
  • Android中多进程通信的方式有哪些?
  • 为什么 Android 要采用 Binder 作为 IPC 机制?
  • system_server 为什么要在 Zygote 中启动,而不是由 init 直接启动呢?
  • Zygote 为什么不采用 Binder 机制进行 IPC 通信?
  • Binder有什么优势
  • Binder是如何做到一次拷贝的
  • MMAP的内存映射原理了解吗?
  • 说说四大组件的通信机制
  • 简述下 Handler 机制的总体原理?
  • Handler 或者说 Looper 如何切换线程?
  • Handler、Mesage 和 Runnable 的关系如何理解?
  • Handler 为什么可能导致内存泄露?如何避免?
  • Handler在系统当中的应用
  • Handler如果没有消息处理是阻塞的还是非阻塞的?
  • handler.post(Runnable) runnable是如何执行的?
  • ActivityManagerService是什么?什么时候初始化的?有什么作用?
  • Instrumentation是什么?和ActivityThread是什么关系?
  • ActivityManagerService和zygote进程通信是如何实现的。

Kotlin方面

  • 请简述一下什么是 Kotlin?它有哪些特性?
  • Kotlin中实现单例的几种常见方式?
  • 在Kotlin中,什么是内联函数?有什么作用?
  • 请谈谈Kotlin中的Coroutines,它与线程有什么区别?有哪些优点?
  • 说说Kotlin中的Any与Java中的Object 有何异同?
  • Kotlin中的数据类型有隐式转换吗?为什么?
  • Kotlin中集合遍历有哪几种方式
  • Kotlin内置标准函数let的原理是什么?
  • Kotlin语言的run高阶函数的原理是什么?

音视频方面

  • 怎么做到直播秒开优化?
  • 数字图像滤波有哪些方法?
  • 图像可以提取的特征有哪些?
  • FFMPEG:图片如何合成视频
  • 常见的音视频格式有哪些?
  • 请叙述MPEG视频基本码流结构?
  • 说一说ffffmpeg的数据结构?
  • 如何降低延迟?如何保证流畅性?如何解决卡顿?解决网络抖动?
  • 平时说的软解和硬解,具体是什么?

Flutter方面

  • Dart 语言的特性?
  • Dart 多任务如何并行的?
  • dart是值传递还是引用传递?
  • Flutter 特性有哪些?
  • Widget 和 element 和 RenderObject 之间的关系?
  • 使用mixins的条件是什么?
  • Stream 两种订阅模式?
  • Flutter中的Widget、State、Context 的核心概念?是为了解决什么问题?
  • 说一下Hot Reload,Hot Restart,热更新三者的区别和原理
  • Flutter 如何与 Android iOS 通信?
  • 说一下什么是状态管理,为什么需要它?


最后

改变人生,没有什么捷径可言,这条路需要自己去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道!!!

举报

相关推荐

0 条评论