赞
踩
金九银十马上就要到了,又是一年面试季,很多人都准备在这个时候找到一个好一点的工作,我整理了一份阿里、美团、百度、滴滴、腾讯、头条等大厂的面试题合集,其中概括的知识点有,Java基础、Java集合、Java虚拟机、Java多线程、Android四大组件、异步、UI、性能优化、数据结构、算法、音视频、flutter、Kotlin、Framework等模块,共1000多页!!
可以说这份面试题对于 Android开发的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,不吹不黑,大家看了之后就知道:金九银十,有他足矣!
废话不多说一起来看面试题吧!!!
大体区别如下:
List中存储的数据是有顺序的,并且值允许重复;Map中存 储的数据是无序的,它的键是不允许重复的,但是值是允 许重复的;Set中存储的数据是无顺序的,并且不允许重 复,但元素在集合中的位置是由元素的hashcode决定,即 位置是固定的(Set集合是根据hashcode来进行数据存储 的,所以位置是固定的,但是这个位置不是用户可以控制 的,所以对于用户来说set中的元素还是无序的)
viewModel 做数据管理,activity 和 fragment 公用同个viewModel 实现数据传递
Context也叫上下文,是有关应用程序环境的全局信息的接口。这是一个抽象类, 它允许访问特定于应用程序的资源和类,以及对应用程序级操作的调用,比如启动活动,发送广播和接收意图等;
Activity,Service,Application都是 Context的子类。
Context 的具体实现类是 ContextImpl, 还有一个包装类ContextWrapper, ContextWrapper 的 子 类 有 Service ,Application,ContextThemeWrapper, Activity 又是ContextThemeWrapper 的子类,ContextThemeWrapper 也可以叫 UI Context,跟UI 操作相关的最好使用此类 Context。
ContextWrapper 中有个 mBase,这个 mBase 其实是ContextImpl,它是在Activity, Service, Application 创建时通过attachBaseContext()方法将各自对对应ContextImpl 赋值的。对 context 的操作,最终实现都是在ContextImpl。
对于 startActivity操作
kotlin和java一样也是一门jvm语言最后的编译结果都是.class文件,并且可以通过kotlin的.class文件反编译回去java代码,并且封装了许多语法糖,其中我在项目中常用的特性有
initState() 表示当前 State 将和一个 BuildContext 产生关联,但是此时BuildContext 没有完全装载完成,如果你需要在该方法中获取 BuildContext ,可以 new Future.delayed(constDuration(seconds: 0, (){//context}); 一下。
didChangeDependencies() 在 initState() 之后调用,当 State 对象的依赖关系发生变化时,该方法被调用,初始化时也会调用
deactivate() 当 State 被暂时从视图树中移除时,会调用这个方法,同时页面切换时,也会调用。
dispose() Widget 销毁了,在调用这个方法之前,总会先调用 deactivate()。
didUpdateWidge 当 widget 状态发生变化时,会调用。
通过 StreamBuilder 和 FutureBuilder 我们可以快速使用 Stream 和 Future 快速构建我们的异步控件:
Flutter 中 runApp 启动入口其实是一个 WidgetsFlutterBinding ,它主要是通过BindingBase 的子类 GestureBinding 、ServicesBinding 、SchedulerBinding 、PaintingBinding 、SemanticsBinding 、 RendererBinding 、WidgetsBinding 等,通过 mixins 的组合而成的。
Flutter 中的 Dart 的线程是以事件循环和消息队列的形式存在,包含两个任务队列,一个是 microtask 内部队列,一个是 event 外部队列,而 microtask 的优先级又高于event 。
因为 microtask 的优先级又高于 event, 同时会阻塞event 队列,所以如果microtask 太多就可能会对触摸、绘制等外部事件造成阻塞卡顿哦。
Flutter 中存在四大线程,分别为 UI Runner、GPU Runner、IO Runner, Platform Runner (原生主
线程) ,同时在 Flutter 中可以通过 isolate 或者 compute 执行真正的跨线程异步操作。
希望这份面试题,能帮助大家把握住机会,找到自己心仪的工作!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。