1.一面(2020.08.02)
-
1.存储数据的几种方式:SharePreference、数据库、文件
-
2.使用安卓数据库时,有哪些生命周期方法:onCreate、onUpgrade
-
3.如果要给数据库增加字段,需要怎么做?
-
方法1:通过alter table add column来做
-
方法2:先给旧表改名,然后建一张新表包含新的字段,再将旧表数据迁移过去,最后删除旧表
-
-
4.数据库读写是线程安全的吗?(当时说的是,是线程安全的,这个锁的机制应该交给数据库去做,错了)
-
读操作是线程安全的:多个线程或进程读取同一个数据库的内容,是可以的。
-
写操作多个线程操作会抛异常(我感觉这里不能直接说线程不安全吧,因为SqlLite确实是有锁机制的):在多进程或多线程中使用sqlite,同时操作同一个数据库的话,会导致异常抛出。不同线程或实例化多个SqliteOpenhelper来操作同一个数据库,也会导致同样的问题。但不同线程使用同一个sqliteopenhelper来获取SqliteDatabase进行操作的话,是可以的。
-
-
5.SharePreference的实现原理,是不是线程安全的,apply和commit有什么区别
-
commit:
-
commit方法是有一个boolean的返回值
-
当数据变化进行存储时是一个原子性的操作
-
当两个editor对象同时对一个共享的preferences参数进行操作时,永远都是最后一个调用commit方法的editor变更了最后的数据值
apply:
-
apply方法是没有返回值的
-
当两个editor同时对preferences对象编辑时,也是最后一个调用apply方法的对象编辑数据
-
apply的提交操作也是原子性的,但是只提交到内存,速度更快
-
-
-
6.Handler机制
-
7.HashMap、HashTable、ConcurrentHashMap的原理
-
8.计算机网络五层模型
-
9.三次握手过程,为什么需要三次握手
-
10.http状态码
-
算法题:有1000万人,有10000份新冠检测试剂,如何尽可能多的检测出来得新冠的人数
2.二面(2020.08.06)
-
说http1.1和1.0的区别
-
说http2.0与1.1的区别
-
http3.0了解吗
-
View的事件分发流程
-
了解安卓最前沿的技术有哪些?
-
怎么看待大前端
-
反问,问对我有什么建议:知识的深度决定你的天花板,广度决定你靠什么吃饭
3. Hr(2020.08.08)
大概问了项目、性格方面的一些问题。
全部评论
(7) 回帖