闲话少说直接入正题
你敢信年入百万人民币的白左能精雕细琢出这样的垃圾么(见下图) 。这是16年做了五六年的情况,现在20年了,听说 终于能跑hello world了。
某西海岸IT大厂,产品失败就开源出去,安排鸡肋资深工程师活跃项目,让它看起来没死掉.这几只"鸡肋"的水平之烂突破天际(我不确定这些人是否还是原厂全职员工,但领全职薪水是无疑的).让我领教了美国大厂资深白人工程师的下限。公司不点名,产品直接和Google FB 的开源框架竞争
1 唯我独尊 坐井观天。明明是被主流框架干凉凉的过时技术(需要说明的是,这个过时技术的核心 并不是这几个人做的,而是该公司历史代码) 还洗脑我司老总,要求投500万美金.都发布到0.8了,连hello world都崩溃.项目leader还大言不惭说资深的程序员都只用邮件列表,从不看issue管理!(他自己根本不信这屁话,懒得改bug而已).
2 到处是匪夷所思的bug.日历控件渲染错误.思路奇葩不说,代码也错.我一下午改了,提交patch,附测试.结果触犯了他们自留地 坚决不接受(项目名义上开源,其实一言堂,害怕外人夺权)。各种提交全都不接受,说有更重要的重构(2年后重构被他自己枪毙了)。看到这"日历"里面游离的格子没有? 这是做了几年的前端框架?!拿头跟react竞争??
然后这是拒绝我patch后 花半年重做的日历控件?WTF?就不说普通中国程序员了,就算在读的学生/学员,他敢交这么个狗shi上去?老师得当众砸烂她狗头吧?我司一直支持这垃圾的二货老板看到这截图心脏病差点都犯了!扯点细节,因他每个"日期"都是一个空白div和文本div,用css物理定位拼在一起。不说蠢不蠢,可他又hard code单元的长宽高间距等,只要你的页面跟他的时候不一样大(可是几乎必然不一样大啊),就必然出现一团面条
3 一知半解 过度设计.框架缺乏标准控件,只有几个button/list。因为他们有“无限可扩展”框架,只需要基本控件,其他由外围用户制作。我看了下代码,为了"无限可扩展",button竟然用10个类实现的?!(只是渲染代码,而"模型"还好几个类) 好吧 欺负我读书少,从来没见过哪个框架敢夸口无限可扩展,facebook google 都是被你们碾压的傻逼么?简单的button,你重复包装了三层四层,就自以为技术突破了?
本着学习的心态, 那就求他先扩展个grid吧?搞了几天居然告诉我被卡住了?不行啊,要改基础类,然后又卡住?你们猜怎么着?最后为了做个grid,他把框架自身都改了!这就是秒天秒地的可扩展性?那个grid刷新一遍要死几秒,这个没法改 ,再改推翻框架了
4 自我感觉爆棚 除了我们全世界都傻逼.搞了近8年,来来去去就那几个人,作为一个有大厂赞助的项目,github才200个star,我看到他们在邮件列表里面一本正经的讨论: 为什么我们的框架这么屌,满世界的程序员要去用react vue啊!?
凡有用户想评估,提几个问题(这么久还没发布1.0, 为什么helloworld出错?) 我觉得很友好克制了吧, 被把持的几个大佬狂喷。有次某愣头问你这代码安全框架怎么考虑啊云云,可能是踩到了尾巴?领头的程序员竟勃然大怒 几篇雄文把那哥们骂到狗血淋头,连 I don't care how users think都说出来了.对方都吓得不敢回复了,还在群里面咒骂,恨不得顺着网线爬过去打残打死打烂那哥们 ...
5 框架没做完,又换皮重新做.17年我老板很兴奋,说已发布0.83,很快要1.00了(但这个0.83仍然不能跑helloworld).不料对方突然长邮件通知 这个项目被他们自己毙掉,准备另起炉灶又搞一个.我老板情急之下长公开信“劝诫”,自然是毫无作用.讲道理我终于明白了 他们搞这个项目并不想做出来啥东西,只是一直做 一直爽 永远恰饭,原公司也根本没指望他们能做出任何东西!
最终又搞了个换皮垃圾项目,前前后后这套代码已经恰饭10年,最新版本可以跑hello world,嗯 伟大的几步。如果你不了解这黑历史,从宣传网站上你根本看不出来这破玩意能做10年?!
这可是西海岸本土白左 名校毕业 大厂资深工程师 美帝脊梁啊!我看了这里的答案,有些是无心之失,更多只是经验不足.考虑收入和资历(这几人就算公司对他们评价不高 最低年入15万刀有吧),没有一个能打的!
《Android开发面试真题合集》
就快要到“金三银四”面试季了,给大家分享一份《Android开发面试真题合集》
该面试宝典不仅收录了本人亲身面试遇到的问题,还收录了从一些朋友那里收集过来的问题。在以后的工作中本 人也会不断地更新和充实面试宝典,当然也希望大家能够多多奉献比较优质的面试题。
不仅展示了常见的面试问题以及回答技巧,还详细讲解了每一道题所包含的知识点,让每个程序员不仅知其然,更知其所以然。
大家可以通过我记录下的这些面试实战记录略微感知一下真实面试的情况,从中学习一些面试技巧以便让自己在未来的面试中能够得心应手,顺利拿到自己喜欢的 offer。
由于篇幅原因,下面以截图展示部分内容。如有需要以下完整学习笔记PDF,可以前往 GitHub自行查阅。
正文总共分为4个部分:
Java 基础+进阶
Android 基础+进阶
项目面试常见问题
简历+社招解答+经典HR面试解析
第一次看我文章的小伙伴可以点赞关注支持一下小老弟哦~~~
<meta charset="utf-8">
第一章 Java 知识点汇总
- JVM
- JVM 工作流程
- 运行时数据区(Runtime Data Area)
- 方法指令
- 类加载器
- 垃圾回收 gc
- 对象存活判断
- 垃圾收集算法
- 垃圾收集器
- 内存模型与回收策略
- Object
- equals 方法
- hashCode 方法
- static
- final
- String、StringBuffer、StringBuilder
- 异常处理
- 内部类
- 匿名内部类
- 多态
- 抽象和接口
- 集合框架
- HashMap
- 结构图
- HashMap 的工作原理
- HashMap 与 HashTable 对比
- ConcurrentHashMap
- Base 1.7
- Base 1.8
- ArrayList
- LinkedList
- CopyOnWriteArrayList
- HashMap
- 反射
- 单例
- 饿汉式
- 双重检查模式
- 静态内部类模式
- 线程
- 状态
- 状态控制
- volatile
- synchronized
- 根据获取的锁分类
- 原理
- Lock
- 锁的分类
- 悲观锁、乐观锁
- 自旋锁、适应性自旋锁
- 死锁
- 锁的分类
- 引用类型
- 动态代理
- 元注解
答案解析
image
Android面试题答案解析pdf免费获取链接:https://github.com/733gh/xiongfan2.0/tree/main
第二章 Android 知识点汇总
- Activity
- 生命周期
- 启动模式
- 启动过程
- Fragment
- 特点
- 生命周期
- 与Activity通信
- Service
- 启动过程
- 绑定过程
- 生命周期
- 启用前台服务
- BroadcastReceiver
- 注册过程
- ContentProvider
- 基本使用
- 数据存储
- View
- MeasureSpec
- MotionEvent
- VelocityTracker
- GestureDetector
- Scroller
- View 的滑动
- View 的事件分发
- 在 Activity 中获取某个 View 的宽高
- Draw 的基本流程
- 自定义 View
- 进程
- 进程生命周期
- 多进程
- 进程存活
- OOM_ADJ
- 进程被杀情况
- 进程保活方案
- Parcelable 接口
- 使用示例
- 方法说明
- Parcelable 与 Serializable 对比
- IPC
- IPC方式
- Binder
- AIDL 通信
- Messenger
- Window / WindowManager
- Window 概念与分类
- Window 的内部机制
- Window 的创建过程
- Activity 的 Window 创建过程
- Dialog 的 Window 创建过程
- Toast 的 Window 创建过程
- Bitmap
- 配置信息与压缩方式
- 常用操作
- 裁剪、缩放、旋转、移动
- Bitmap与Drawable转换
- 保存与释放
- 图片压缩
- BitmapFactory
- Bitmap创建流程
- Option类
- 基本使用
- 内存回收
- 屏幕适配
- 单位
- 头条适配方案
- 刘海屏适配
- Context
- SharedPreferences
- 获取方式
- getPreferences
- getDefaultSharedPreferences
- getSharedPreferences
- 架构
- apply / commit
- 注意
- 获取方式
- 消息机制
- Handler 机制
- 工作原理
- ThreadLocal
- MessageQueue
- Looper
- Handler
- 线程异步
- AsyncTask
- 基本使用
- 工作原理
- HandlerThread
- IntentService
- 线程池
- AsyncTask
- RecyclerView 优化
- Webview
- 基本使用
- WebView
- WebSettings
- WebViewClient
- WebChromeClient
- Webview 加载优化
- 内存泄漏
- 基本使用
答案解析
image
第三章 Android 扩展知识点汇总
- ART
- ART 功能
- 预先 (AOT) 编译
- 垃圾回收优化
- 开发和调试方面的优化
- ART GC
- ART 功能
- Apk 包体优化
- Apk 组成结构
- 整体优化
- 资源优化
- 代码优化
- .arsc文件优化
- lib目录优化
- Hook
- 基本流程
- 使用示例
- Proguard
- 公共模板
- 常用的自定义混淆规则
- aar中增加独立的混淆配置
- 检查混淆和追踪异常
- 架构
- MVC
- MVP
- MVVM
- Jetpack
- 架构
- 使用示例
- NDK 开发
- JNI 基础
- 数据类型
- String 字符串函数操作
- 常用 JNI 访问 Java 对象方法
- NDK 开发
- 基础开发流程
- System.loadLibrary()
- CMake 构建 NDK 项目
- 常用的 Android NDK 原生 API
- JNI 基础
- 类加载器
- 双亲委托模式
- DexPathList
image
第四章 Android 开源库源码分析
- LeakCanary
- 初始化注册
- 引用泄漏观察
- Dump Heap
- EventBus
- 自定义注解
- 注册订阅者
- 发送事件
image
第五章设计模式汇总
- 设计模式分类
- 面向对象六大原则
- 工厂模式
- 单例模式
- 建造者模式
- 原型模式
- 适配器模式
- 观察者模式
- 代理模式
- 责任链模式
- 策略模式
- 备忘录模式
答案解析
image
第六章计算机网络基础
- 网络体系的分层结构
- HTTP 相关
- 请求报文
- 请求行
- 请求头
- 响应报文
- 常见状态码
- 缓存机制
- Https
- Http 2.0
- 请求报文
- TCP/IP
- 三次握手
- 四次挥手
- TCP 与 UDP 的区别
- Socket
- 使用示例
答案解析
- 使用示例
image
第七章 常见面试算法题汇总
- 排序
- 比较排序
- 冒泡排序
- 归并排序
- 快速排序
- 线性排序
- 计数排序
- 桶排序
- 比较排序
- 二叉树
- 顺序遍历
- 层次遍历
- 左右翻转
- 最大值
- 最大深度
- 最小深度
- 平衡二叉树
- 链表
- 删除节点
- 翻转链表
- 中间元素
- 判断是否为循环链表
- 合并两个已排序链表
- 链表排序
- 删除倒数第N个节点
- 两个链表是否相交
- 栈 / 队列
- 带最小值操作的栈
- 有效括号
- 用栈实现队列
- 逆波兰表达式求值
- 二分
- 二分搜索
- X的平方根
- 哈希表
- 两数之和
- 连续数组
- 最长无重复字符的子串
- 最多点在一条直线上
- 堆 / 优先队列
- 前K大的数
- 前K大的数II
- 第K大的数
- 二叉搜索树
- 验证二叉搜索树
- 第K小的元素
- 数组 / 双指针
- 加一
- 删除元素
- 删除排序数组中的重复数字
- 我的日程安排表 I
- 合并排序数组
- 贪心
- 买卖股票的最佳时机
- 买卖股票的最佳时机 II
- 最大子数组
- 主元素
- 字符串处理
- 生成括号
- Excel表列标题
- 翻转游戏
- 翻转字符串中的单词
- 转换字符串到整数
- 最长公共前缀
- 回文数
- 动态规划
- 单词拆分
- 爬楼梯
- 打劫房屋
- 编辑距离
- 乘积最大子序列
- 矩阵
- 螺旋矩阵
- 判断数独是否合法
- 旋转图像
- 二进制 / 位运算
- 落单的数
- 格雷编码
- 其他
- 反转整数
- LRU缓存策略
答案解析
image
第八章 Kotlin 相关知识点
-
from-java-to-kotlin
-
kotlin_tips
-
从原理分析Kotlin的延迟初始化: lateinit var和by lazy
-
使用Kotlin Reified 让泛型更简单安全
-
Kotlin里的Extension Functions实现原理分析
-
Kotlin系列之顶层函数和属性
-
Kotlin 兼容 Java 遇到的最大的 “坑”
-
Kotlin 的协程用力瞥一眼
-
Kotlin 协程「挂起」的本质
-
到底什么是「非阻塞式」挂起?协程真的更轻量级吗?
-
资源混淆是如何影响到Kotlin协程的
-
Kotlin Coroutines(协程) 完全解析
答案解析
image
第九章 Flutter 相关知识点汇总
-
Flutter原理与实践
-
揭秘Flutter Hot Reload(原理篇)
-
Flutter 动态化探索
-
Flutter如何和Native通信-Android视角
-
深入理解Flutter Platform Channel
-
Flutter Engine 编译指北
-
Flutter Engine 线程模型
-
深入理解Flutter多线程
-
Flutter状态管理 - 初探与总结
-
Flutter | 状态管理指南篇——Provider
-
深入理解Flutter应用启动
-
Flutter渲染机制—UI线程
-
Flutter渲染机制—GPU线程
-
深入理解Flutter应用启动
-
深入理解setState更新机制
-
深入理解Flutter消息机制
-
深入理解Flutter动画原理
-
Dart虚拟机运行原理
-
源码解读Flutter tools机制
-
源码解读Flutter run机制
答案解析
同时我也给大家分享一下我的QQ群,欢迎大家前来交流技术点击直达