其他分享
首页 > 其他分享> > 关于Android性能优化的几点建议,附面试题答案

关于Android性能优化的几点建议,附面试题答案

作者:互联网

前言

19年6月份从网易云音乐离开,放弃了留学机会,开始了人生的第一次创业,前后尝试了两个项目,因为个人能力与时机因素都失败了,虽然没能享受到创业所能够带来高杠杆物质上的回报,但是对个人软技能和自我边界认知上都有了很大的提升,对于这段经历有以下四点想送给准备创业和走在创业路上的朋友们。

  1. 创业本质是一个不断降低商业模式风险的过程。(创业前最好去北京798的智能硬件展厅看一看)
  2. 当你对于自己的未来感到模糊,对当下感到厌倦的时候,跳出舒适圈,快速尝试是最好的解决方案。
  3. 打开自己,多结识各路“牛鬼蛇神”,你当下的困惑大多都有人比你提前经历过,且都可以给予你具体可操的解决方案。
  4. 忌纸上谈兵,实际去做的质感是书本上永远学习不到的,去干而不是去看。

经过这一次创业和之前的工作经历,对于下一份的工作在选择上所以也有了更多的想法,对于工作的成长性和平台背景是当下比较看重的,当然钱也是考核的一个重要指标(一切以成长和主人翁精神来鼓励加班不给钱的公司都是PUA)。结合自身的职业发展诉求,快手和字节跳动是本次找工作的目标公司。这两家公司的offer也是首先拿到的,因为offer的流程有些时间,因此也面试了一些其它的公司,感受到了各家公司的工作流程,面试过程中面试官也给予了很多技术成长上的建议,对于一些技术和设计问题也展开了一些探讨。一些面试官分享了他们在做的业务,商业模式等,总之在职业素养,技术视野,商业模式上都在潜移默化中得到一些提升。

由于内容比较多,文章篇幅有限,所以只是整理了一部分知识点,全部的资料我整理成了一份PDF文件,在文末有详细的免费领取方式

1、Android属性动画实现原理

2、补间动画实现原理

3、Android各个版本API的区别

4、Requestlayout,onlayout,onDraw,DrawChild区别与联系

5、invalidate和postInvalidate的区别及使用

6、Activity-Window-View三者的差别

7、谈谈对Volley的理解

8、如何优化自定义View

9、低版本SDK如何实现高版本api?

10、描述一次网络请求的流程

11、HttpUrlConnection 和 okhttp关系

12、如何缩减APK包大小?

13、Android与服务器交互的方式中的对称加密和非对称加密是什么?

14、设备横竖屏切换的时候,接下来会发生什么?

15、Android启动Service的两种方式是什么? 它们的适用情况是什么?

16、谈谈你对Android中Context的理解?

17、Service的onCreate回调在UI线程中吗?9、请介绍下AsyncTask的内部实现,适用的场景是?

18、谈谈你对binder机制的理解?

19、Android中进程间通信有哪些实现方式?

20、介绍下实现一个自定义view的基本流程

21、Android中touch事件的传递机制是怎样的?

22、Android多线程的实现方式有哪些?

23、Android开发中何时使用多进程?使用多进程的好处是什么?

24、ANR是什么?怎样避免和解决ANR?

25、Android下解决滑动冲突的常见思路是什么?

26、如何把一个应用设置为系统应用?

27、内存泄露检测有什么好方法?

28、Android消息机制

29、Android View绘制流程,当一个TextView的实例调用setText()方法后执行了什么

30、Android dalvik虚拟机和Art虚拟机的优化升级点

31、Android屏幕渲染机制

32、热修复的原理,你都了解过哪几种热修复框架

33、OkHttp的原理

34、Android 线程池的实现原理

35、JavaGC机制

36、HashMap的实现机制,怎么样HashMap线程安全

37、可重入锁的实现,公平锁非公平锁都是什么定义?

38、都用过那些常用的数据结构,说说对树的了解?

39、Activity启动模式,allowReparent的特点和栈亲和性

40、WebView优化

41、有没有Jni使用经验

42、有使用过RxJava吗?

43、说说你对设计模式的理解,开发过程中主要用到了哪些设计模式?

44、冒泡排序的链表实现

45、写个快排

46、写个单例模式

47、Activity启动模式

48、异常生命周期

49、从点击应用图标到进入应用,Android系统都做了哪些工作,期间涉及到的进程切换有哪些?

50、说说你了解的IPC方法

51、说说Binder的大体实现

52、怎么控制另外一个进程的View显示

53、广播中怎么进行网络请求

54、说说Android中线程池的实现

55、HashMap如果Hash冲突了怎么解决?

56、双线程通过线程同步的方式打印

作者2013年从java开发,转做Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。

参与过不少面试,也当面试官 面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!

我整理了一份阿里P7级别的最系统的Android开发主流技术,特别适合有3-5年以上经验的小伙伴深入学习提升。

主要包括阿里,以及字节跳动,腾讯,华为,小米,等一线互联网公司主流架构技术。如果你想深入系统学习Android开发,成为一名合格的高级工程师,可以收藏一下这些Android进阶技术选型

我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言

高级UI与自定义view;
自定义view,Android开发的基本功。

性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。

NDK开发;
未来的方向,高薪必会。

前沿技术;
组件化,热升级,热修复,框架设计

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,GitHub可见;《Android架构视频+学习笔记》

当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。

%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**

当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。

不出半年,你就能看出变化!

标签:自定义,实现,附面,技术,试题答案,学习,面试,Android
来源: https://blog.csdn.net/m0_57066131/article/details/117082699