Flutter面试题

Flutter面试题

Flutter有几种Widget,有什么区别?
StatelessWidget的生命周期有哪些,请按生命周期顺序说一下?
Flutter是怎么实现热重载的,说说具体实现原理?
为什么说Flutter的性能好,与RN的区别?
Flutter中是怎么实现并发操作的?
isolate是怎么进行通信和实例化的?
Future和isolate有什么区别?
Stream与Future是什么关系?
Widget唯一标识key有几种?
await for 具体怎么使用?
说说mixin extends implemet之间的关系?

Dart部分

1、Dart 属于是强类型语言 ,但可以用 var 来声明变量,Dart 会自推导出数据类型,var 实际上是编译期的“语法糖”。dynamic 表示动态类型, 被编译后,实际是一个 object 类型,在编译期间不进行任何的类型检查,而是在运行期进行类型检查。

2、Dart 中 if 等语句只支持 bool 类型,switch 支持 String 类型。

3、Dart 中数组和 List 是一样的。

4、Dart 中,Runes 代表符号文字 , 是 UTF-32 编码的字符串, 用于如 Runes input = new Runes(‘\u{1f596} \u{1f44d}’);

5、Dart 支持闭包。

6、Dart 中 number 类型分为 int 和 double ,没有 float 类型。

7、Dart 中 级联操作符 可以方便配置逻辑
event
..id = 1
..type = “”
..actor = “”;

易车一面面试题

易车一面面试题

易车一面:
1、Arouter原理
2、目前的组件化项目架构应用分层
3、业务模块直接的通信怎么做的,是在common里封装接口吗
4、组件化过程中遇到的困难,怎么解决的
5、不想在common里封装接口,想达到通信的目的,怎么做(自己设计路由框架怎么做)
6、集成启动的时候,各个业务模块的初始化启动怎么做(反射获取)
7、MVVM优点在哪
8、业务层怎么做管理,四个业务层都各自迭代,怎么协同管理(maven,aar)
9、apk包体积优化怎么做的
10、自己做热修复的系统怎么设计、插件什么格式下载下来
11、布局优化,内存优化怎么做的
12、约束布局
13、jvm内存划分,内存泄漏怎么发生的,垃圾回收,GcRoot都有哪些

oppo的面试题

oppo的面试题

collection和collections的区别
map遍历过程中删除数据会发生什么如何解决
1,Android为什么使用Dalvik 不用JVM Dalvik和ART的演变
2.双重锁单例 volitile关键字,sync锁
3.binder通信流程,跨进成通信方式,binder的大小
4.代理模式的实现
5.热修复原理 (双亲委托)。

oppo的面试题
1.tcp怎么保证数据传输的可靠性
2.多进程的好处和缺点
3.Service和Thread的区别
4.Socket有什么优化点
5.偏向锁的实现原理
6.CAS的实现原理
7.设计模式的设计原则
8.jvm的多线程机制
9.rsa加密原理
10.hashmap和treemap有什么区别
HashMap:基于哈希表实现 .优化HashMap空间的使用,可以调优初始容量和负载因子。适用于在Map中插入、删除和定位元素。
TreeMap:基于红黑树实现。TreeMap没有调优选项,因为该树总处于平衡状态。适用于按自然顺序或自定义顺序遍历键(key)。

1.为什么ThreadLocalMap使用弱引用存储ThreadLocal?

假如使用强引用,当ThreadLocal不再使用需要回收时,发现某个线程中ThreadLocalMap存在该ThreadLocal的强引用,无法回收,造成内存泄漏。

因此,使用弱引用可以防止长期存在的线程(通常使用了线程池)导致ThreadLocal无法回收造成内存泄漏。

2.那通常说的ThreadLocal内存泄漏是如何引起的呢?

我们注意到Entry对象中,虽然Key(ThreadLocal)是通过弱引用引入的,但是value即变量值本身是通过强引用引入。

这就导致,假如不作任何处理,由于ThreadLocalMap和线程的生命周期是一致的,当线程资源长期不释放,即使ThreadLocal本身由于弱引用机制已经回收掉了,但value还是驻留在线程的ThreadLocalMap的Entry中。即存在key为null,但value却有值的无效Entry。导致内存泄漏。

ANR导致原因?

  1. cpu过载导致,全量logcat日志里会有相关的打印,各个进程cpu占用情况,这种一般不需要分析trace文件
  2. 频繁gc导致,全量日志anr之前会有频繁的gc打印,trace文件头部也会统计gc单次耗时,总次数和总耗时
    主线程也会进入wait状态,之后就是一系列的gc相关的线程 wait
  3. 死锁,这种我遇到的很少,就讲了下一般会打印资源is heldby xxx进程会形成互相持有的状态
Android 基础知识总结

Android 基础知识总结

Activity生命周期

img

Fragment生命周期

img

Activity****四种启动模式

  • standard : 标准模式,每次启动Activity都会创建一个新的Activity实例,并且将其压入任务栈栈顶,而不管这个Activity是否已经存在。Activity的启动三回调(onCreate()->onStart()->onResume())都会执行。

  • singleTop : 栈顶复用模式.这种模式下,如果新Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,所以它的启动三回调就不会执行,同时Activity的onNewIntent()方法会被回调.如果Activity已经存在但是不在栈顶,那么作用与standard**模式一样.

  • singleTask: 栈内复用模式.创建这样的Activity的时候,系统会先确认它所需任务栈已经创建,否则先创建任务栈.然后放入Activity,如果栈中已经有一个Activity实例,那么这个Activity就会被调到栈顶,onNewIntent(),并且singleTask会清理在当前Activity上面的所有Activity.(clear top)

  • singleInstance : 加强版的singleTask模式,这种模式的Activity只能单独位于一个任务栈内,由于栈内复用的特性,后续请求均不会创建新的Activity,除非这个独特的任务栈被系统销毁了

百度二面面试题

百度二面面试题

  1. 正向代理,反向代理
    正向代理 client proxy -> service client -> proxy service
  2. 数据库 后10条数据 sql语句怎么写
    Select * from user order by id desc limit 10
  3. 非关系型数据库库和关系型数据库区别
    关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。
    非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、
    键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。
  4. 多个数据库版本升级 如何设计减少后期开发人员工作量
  5. 计算2进制数据有多少个1
  6. java文件编译过程
    通过javac 将 java文件编译成.class字节码文件
  7. dex文件如何加载
    DexClassLoader PathClassLoader 。DexClassLoader 加载外部文件。PathClassLoader加载内部应用。继承自BaseDexClassLoader,内部包含DexElement 数组。
  8. 列表卡顿优化
  9. 内存紧张是否会导致卡顿
  10. synchronized作用, 如何 让多个实例的同一个方法只有一个线程访问
  11. 计算二叉树深度
  12. 打印斐波那契数列
    0,1,1,2,3,5,8,13,21,34,55,89,144
  13. 微信朋友圈 图片点击放大效果和手指拖动效果如何实现
  14. anr问题怎么分析
  15. dalvik 虚拟机和ART虚拟机主要区别
  16. socket是什么
  17. tcp协议的上层协议有哪些
    http websocket mqtt
Java基础知识面试题

Java基础知识面试题

Java语言有啥特点?
简单易学
面向对象(封装、继承、多态、抽象)
跨平台(JVM实现跨平台)
可靠性
安全性
支持多线程
支持网络编程
编译和解析并存
JVM是什么?
JVM(Java虚拟机):是运行Java字节码的虚拟机。JVM有针对不同系统的特定实现,目的是使用相同的字节码,它们都会给出相同的结果。
字节码:JVM可以理解的代码,扩展名为 .class 的文件。它不面向任何特定的处理器,只面向虚拟机。Java通过字节码的方式,在一定程度上解决了传统解析型语言执行效率低的问题,同时又保留了解析型语言可移植的特定。所以Java程序运行比较高效。
字节码和不同系统的JVM的实现是Java语言“一次编译,随处可运行”的关键。
Java 程序运行过程
OracleJDK 和 OpenJDK 的对比?
OpenJDK是一个参考模型并且是完全开源的;而OracleJDK是基于OpenJDK7构建的,并不是完全开源的。
OracleJDK比OpenJDK更稳定。两者代码几乎相同,但OracleJDK有更多的类和一些错误的修复。
在响应性和JVM性能方面,OracleJDK更出色一些。
import java 和 javax 有什么区别?
刚开始Java API所必需的包是java开头的包,javax是扩展API包来使用。
后来 javax 逐渐成为 Java API 的组成部分。
字符型常量 和 字符串常量的区别?
形式上:字符型常量是单引号引起的一个字符;字符串常量是双引号引起的0个或若干个字符;
含义上:字符型常量相当于一个整型值(ASCII值),可以参加表达式运算;字符串常量代表一个地址值(在内存中的存放位置);
内存大小:字符型常量只占2个字节;字符串常量占若干个字节;
标识符和关键字的区别?
标识符:是一个名字,类、变量、方法的名字都是标识符。
关键字:被Java语言赋予了特殊含义的标识符。例如:private / public / class / new 等。
Java泛型?类型擦除?常用的通配符?
Java泛型:JDK5引入的一个新特性,提供了编译时类型安全检测的机制。表现为:将类型当作参数传递给一个类或者方法。
泛型类
泛型接口
泛型方法
类型擦除:Java泛型是伪泛型,Java在编译期间,所有的泛型信息都会被擦除掉。
常用通配符
? 表示不确定的java类型
T 表示具体的一个java类型
K / V 分别表示Java键值对的 key value
E 表示 Element


:D 一言句子获取中...