说说我是怎么样从一个专科渣渣,到阿里P6Android研发岗……

本文讲述了作者从专科生逆袭面试大厂的经历,重点分享了面试心态调整、技术技能要求,包括Java基础、Android四大组件、Handler等内容,旨在激励面临学历困扰的技术人提升职业发展.

在这里插入图片描述

对于很多没有学历优势的人来说,面试大厂是一件非常有挑战性的事情,我本人也深有体会。

我来自农村,毕业于专科学校,原本以为自己会在流水线上度过一生。然而,生活发生了变故,我的母亲受伤住院,经济压力突然增大,这让我开始重新思考自己的人生和目标。从那时起,我这个专科渣渣也开始努力奋斗,提升自己的技术水平。经过一段时间的修炼,我去面试了百度、腾讯、网易、字节跳动和阿里等大厂,最终成功拿到了阿里P6岗位的offer。

今天,我将分享一下我在面试大厂时遇到的难点和面经,主要是希望激励那些和我一样被学历所困扰的技术人,为他们的职业规划和技术提升提供一个参考方向。感谢!

面试大厂的难点在哪里?

(1)心态调整

首先要克服的第一个困难是心态问题。由于我是专科出身,基础相对较低,所以面试大厂对我来说是一件很没底气的事情,更何况是高级开发岗位。因此,在准备面试之前,我花了很长时间调整心态。所以,心态调整是面试成功的关键。

(2)技术要求

第二个难点就是技术要求。所谓的技术要求,其实就是大厂对岗位的任职要求,也就是作为开发人员,你掌握了多少技术栈?

首先,你简历上写的技能必须熟练掌握。其次,你需要拥有一些亮点,也就是说,你对某个技术有深入的了解,这样才能给面试官留下不一样的印象。

“哎,这人我记得,Java基础特别好的那个。”

那么,面试大厂,需要掌握多少技术呢?

今天我就把我在面试大厂时所遇到的技术问题分享给大家。

1.Activity
  • Activity的启动流程
  • onSaveInstanceState(),onRestoreInstanceState的掉用时机
  • activity的启动模式和使用场景
  • Activity A跳转Activity B,再按返回键,生命周期执行的顺序
  • 横竖屏切换,按home键,按返回键,锁屏与解锁屏幕,跳转透明Activity界面,启动一个 Theme 为 Dialog 的 Activity,弹出Dialog时Activity的生命周期
  • onStart 和 onResume、onPause 和 onStop 的区别
  • Activity之间传递数据的方式Intent是否有大小限制,如果传递的数据量偏大,有哪些方案
  • Activity的onNewIntent()方法什么时候会执行
  • 显示启动和隐式启动
  • scheme使用场景,协议格式,如何使用
  • ANR 的四种场景
  • onCreate和onRestoreInstance方法中恢复数据时的区别
  • activty间传递数据的方式
  • 跨App启动Activity的方式,注意事项
  • Activity任务栈是什么
  • 有哪些Activity常用的标记位Flags
  • Activity的数据是怎么保存的,进程被Kill后,保存的数据怎么恢复的
2.Service
  • service 的生命周期,两种启动方式的区别
  • Service启动流程
  • Service与Activity怎么实现通信
  • IntentService是什么,IntentService原理,应用场景及其与Service的区别
  • Service 的 onStartCommand 方法有几种返回值?各代表什么意思?
  • bindService和startService混合使用的生命周期以及怎么关闭
3.BroadcastReceiver
  • 广播的分类和使用场景
  • 广播的两种注册方式的区别
  • 广播发送和接收的原理
  • 本地广播和全局广播的区别
4.ContentProvider
  • 什么是ContentProvider及其使用
  • ContentProvider,ContentResolver,ContentObserver之间的关系
  • ContentProvider的实现原理
  • ContentProvider的优点
  • Uri 是什么
5.Handler
  • Handler的实现原理
  • 子线程中能不能直接new一个Handler,为什么主线程可以 主线程的Looper第一次调用loop方法,什么时候,哪个类
  • Handler导致的内存泄露原因及其解决方案
  • 一个线程可以有几个Handler,几个Looper,几个MessageQueue对象
  • Message对象创建的方式有哪些 & 区别? Message.obtain()怎么维护消息池的
  • Handler 有哪些发送消息的方法
  • Handler的post与sendMessage的区别和应用场景
  • handler postDealy后消息队列有什么变化,假设先 postDelay 10s, 再postDelay 1s, 怎么处理这2条消息
  • MessageQueue是什么数据结构
  • Handler怎么做到的一个线程对应一个Looper,如何保证只有一个MessageQueue,ThreadLocal在Handler机制中的作用
  • HandlerThread是什么 & 好处 &原理 & 使用场景
  • IdleHandler及其使用场景
  • 消息屏障,同步屏障机制
  • 子线程能不能更新UI
  • 为什么Android系统不建议子线程访问UI
  • Android中为什么主线程不会因为Looper.loop()里的死循环卡死 MessageQueue#next 在没有消息的时候会阻塞,如何恢复?
  • Handler消息机制中,一个looper是如何区分多个Handler的 当Activity有多个Handler的时候,怎么样区分当前消息由哪个Handler处理,处理message的时候怎么知道是去哪个callback处理的
  • Looper.quit/quitSafely的区别
  • 通过Handler如何实现线程的切换
  • Handler 如何与 Looper 关联的
  • Looper 如何与 Thread 关联的
  • Looper.loop()源码
  • MessageQueue的enqueueMessage()方法如何进行线程同步的
  • MessageQueue的next()方法内部原理
  • 子线程中是否可以用MainLooper去创建Handler,Looper和Handler是否一定处于一个线程
  • ANR和Handler的联系
6.View绘制
  • View绘制流程
  • MeasureSpec是什么
  • 子View创建MeasureSpec创建规则是什么
  • 自定义Viewwrap_content不起作用的原因
  • 在Activity中获取某个View的宽高有几种方法
  • 为什么onCreate获取不到View的宽高
  • View#post与Handler#post的区别
  • Android绘制和屏幕刷新机制原理
  • Choreography原理
  • 什么是双缓冲
  • 为什么使用SurfaceView
  • 什么是SurfaceView
  • View和SurfaceView的区别
  • SurfaceView为什么可以直接子线程绘制
  • SurfaceView、TextureView、SurfaceTexture、GLSurfaceView
  • getWidth()方法和getMeasureWidth()区别
  • invalidate() 和 postInvalidate() 的区别
  • Requestlayout,onlayout,onDraw,DrawChild区别与联系
  • LinearLayout、FrameLayout 和 RelativeLayout 哪个效率高
  • LinearLayout的绘制流程
  • 自定义 View 的流程和注意事项
  • 自定义View如何考虑机型适配
  • 自定义控件优化方案
  • invalidate怎么局部刷新
  • View加载流程(setContentView)
7.View事件分发
  • View事件分发机制
  • view的onTouchEvent,OnClickListerner和OnTouchListener的onTouch方法 三者优先级
  • onTouch 和onTouchEvent 的区别
  • ACTION_CANCEL什么时候触发
  • 事件是先到DecorView还是先到Window
  • 点击事件被拦截,但是想传到下面的View,如何操作
  • 如何解决View的事件冲突
  • 在 ViewGroup 中的 onTouchEvent 中消费 ACTION_DOWN 事件,ACTION_UP事件是怎么传递
  • Activity ViewGroup和View都不消费ACTION_DOWN,那么ACTION_UP事件是怎么传递的
  • 同时对父 View 和子 View 设置点击方法,优先响应哪个
  • requestDisallowInterceptTouchEvent的调用时机
8.RecycleView
  • RecyclerView的多级缓存机制,每一级缓存具体作用是什么,分别在什么场景下会用到哪些缓存
  • RecyclerView的滑动回收复用机制
  • RecyclerView的刷新回收复用机制
  • RecyclerView 为什么要预布局
  • ListView 与 RecyclerView区别
  • RecyclerView性能优化
9.Viewpager&Fragment
  • Fragment的生命周期 & 结合Activity的生命周期
  • Activity和Fragment的通信方式, Fragment之间如何进行通信
  • 为什么使用Fragment.setArguments(Bundle)传递参数
  • FragmentPageAdapter和FragmentStatePageAdapter区别及使用场景
  • Fragment懒加载
  • ViewPager2与ViewPager区别
  • Fragment嵌套问题

由于面试内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要2023年Android中高级最全面试真题答案 完整文档的可

目录

img

第一章 Java方面

  • Java基础部分
  • Java集合
  • Java多线程
  • Java虚拟机

img

第二章 Android方面

  • Android四大组件相关
  • Android异步任务和消息机制
  • Android UI绘制相关
  • Android性能调优相关
  • Android中的IPC
  • Android系统SDK相关
  • 第三方框架分析
  • 综合技术
  • 数据结构方面
  • 设计模式
  • 计算机网络方面
  • Kotlin方面

img

第三章 音视频开发高频面试题

  • 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
  • 怎么做到直播秒开优化?
  • 直方图在图像处理里面最重要的作用是什么?
  • 数字图像滤波有哪些方法?
  • 图像可以提取的特征有哪些?
  • 衡量图像重建好坏的标准有哪些?怎样计算?

img

第四章 Flutter高频面试题

  • Dart部分
  • Flutter部分

img

第五章 算法高频面试题

  • 如何高效寻找素数
  • 如何运用二分查找算法
  • 如何高效解决雨水问题
  • 如何去除有序数组的重复元素
  • 如何高效进行模幂运算
  • 如何寻找最长回文子串

img

第六章 Andrio Framework方面

  • 系统启动流程面试题解析
  • Binder面试题解析
  • Handler面试题解析
  • AMS面试题解析

img

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值