07 2020 档案

摘要:虽然是测开岗位,但问的都是Android的专业问题,问的比阿里的细,回答感觉也不是很好,第二天就挂了 一面 进程间通信方式,共享内存实现原理 布局类型,常用UI控件 MessageQueue,Handler,Looper实现原理,Message高效的原理 JNI原理,MakeFile包含什么,放在哪 阅读全文
posted @ 2020-07-31 14:43 夜空中最亮的盖子 阅读(183) 评论(0) 推荐(0)
摘要:面试部门:菜鸟IoT。面试电话一大早就打过来了,我还在床上手机开了静音没听到。然后让内推人问了下,中午吃饭的时候面试官打电话来约了下午3点的面试。 笔试 第一题 纸上写了一个单调非递减的数字序列,每个人依次选择一个数字,然后把这个数字第一次出现位置及其之前的数字都删掉,直到谁把序列删除空谁就赢了,n 阅读全文
posted @ 2020-07-30 19:15 夜空中最亮的盖子 阅读(314) 评论(0) 推荐(0)
摘要:Picasso Glide 原因 内存占用 大 小 Picasso缓存的是全尺寸的图片 硬盘读取 快 慢 Glide会resize 内存读取 慢 快 Glide不需要resize 库大小 小 大 Gif加载 不支持 支持 阅读全文
posted @ 2020-07-28 14:55 夜空中最亮的盖子 阅读(261) 评论(0) 推荐(0)
摘要:使用场景 持久化保存 进程间通信 网络传输对象 使用方式 Serialize 只需要继承Serializable这个接口,Serializable是个空接口,用于标记这是个可序列化的对象。serialVersionUID用于标记序列化和反序列化对象的版本号,不写的话编译时会自动给一个。 public 阅读全文
posted @ 2020-07-22 21:46 夜空中最亮的盖子 阅读(298) 评论(0) 推荐(0)
摘要:目的 Android开发过程中想查看本地数据库里的数据是否正常,一般可以把Sqlite3文件拷出来查看或者用付费插件,今天介绍一种更加方便的穷逼的快捷查看方法。 仓库地址:https://github.com/amitshekhariitbhu/Android-Debug-Database 功能 查 阅读全文
posted @ 2020-07-20 21:10 夜空中最亮的盖子 阅读(433) 评论(0) 推荐(0)
摘要:作用 跨进程通信,多个App直接数据共享,当然进程内通信也是可以的 主要方法 public class BookContentProvider extends ContentProvider { @Override public boolean onCreate() { //第一次打开Provide 阅读全文
posted @ 2020-07-20 19:50 夜空中最亮的盖子 阅读(185) 评论(0) 推荐(0)
摘要:缓存机制 ListView的两级缓存 ListView的缓存和复用由它的父类AbsListView中的RecycleBin实现,设了两个缓存数组mActiveViews和mScrapViews。mActiveViews缓存显示在屏幕中的view,mScrapViews按ViewType缓存离屏的vi 阅读全文
posted @ 2020-07-19 19:42 夜空中最亮的盖子 阅读(1807) 评论(0) 推荐(0)
摘要:问题由来 我们知道,Andoird由于修改UI是线程不安全的,只能在主线程中修改。如果多个线程修改UI肯定会花屏,于是谷歌做了限制,只能在主线程中修改UI。但是有次我在子线程中修改了UI没弹异常。 先来看两段代码 //正常运行btn1.setOnClickListener(new View.OnCl 阅读全文
posted @ 2020-07-17 11:07 夜空中最亮的盖子 阅读(520) 评论(0) 推荐(0)
摘要:相互关系 一张图说明关系: Activity持有一个PhoneWindow实例 mDecorView是View树的根节点,PhoneWindow持有一个mDecorView实例 所有window通过WindowManager管理 WindowManager持有一个ViewRootImpl用于管理Vi 阅读全文
posted @ 2020-07-16 21:46 夜空中最亮的盖子 阅读(419) 评论(0) 推荐(0)
摘要:概述 EventBus基于安卓优化的发布-订阅事件总线,本质上还是Java的观察者模式。消息接收者注册到Bus总线,消息发送后根据相应的消息类型分发消息。 总的注册和消息发送流程如下 源码解读 观察者注册 使用单例模式新建唯一EventBus实例 public static EventBus get 阅读全文
posted @ 2020-07-16 19:44 夜空中最亮的盖子 阅读(1689) 评论(0) 推荐(0)
摘要:dp 一种基于屏幕密度抽象长度单位。在每英寸160点的显示器上,1dp = 1px。为什么要选160这个数字呢,因为第一款安卓设备的DPI是160。 假如在不同设备上都设置了240dp的控件宽度,显示效果是一样的。 sp 与dp类似,但是会根据系统字体的大小调整 px 像素单位,假如在不同分辨率的设 阅读全文
posted @ 2020-07-16 18:56 夜空中最亮的盖子 阅读(438) 评论(0) 推荐(0)
摘要:View.post() 在View绘制成功后执行 firstIv.post(new Runnable() { @Override public void run() { Log.i(TAG, "高度" + firstIv.getHeight() + ",宽度" + firstIv.getHeight 阅读全文
posted @ 2020-07-15 22:43 夜空中最亮的盖子 阅读(599) 评论(0) 推荐(0)
摘要:这是字节面试官问的一个问题,平时Glide用惯了,让我说大图加载原理答不上来。 大图如果直接加载到内存,往往会导致OOM,因为大图所占内存非常大。 Bitmap直接加载 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mi 阅读全文
posted @ 2020-07-15 22:41 夜空中最亮的盖子 阅读(1589) 评论(0) 推荐(0)
摘要:这个问题是字节跳动面试官问的,当时没看过图片异步加载框架的原理,只能跟他说会用。今天仔细看了看原理感觉也没那么难。 Gilde的使用方法也很简单: Glide.with(content) .load(url) .into(imageView); with绑定生命周期,load指定加载资源,into指 阅读全文
posted @ 2020-07-15 16:29 夜空中最亮的盖子 阅读(12740) 评论(2) 推荐(2)
摘要:主要思路是生产者消费者。当A线程打印到第5个时,让B线程的信号量加1;B线程开始执行并结束,结束前让A线程的信号量加1,A线程继续add import java.util.LinkedList; import java.util.List; import java.util.concurrent.S 阅读全文
posted @ 2020-07-13 15:38 夜空中最亮的盖子 阅读(326) 评论(0) 推荐(0)
摘要:多线程编程中耗时线程是很常见的情况,有时候我们不得不在一个线程中去终止另一个耗时线程。JDK并不推荐直接停止比如this.stop(),这会导致一些异常,比如锁未释放程序一直死锁。JDK推荐使用一个线程去通知耗时线程该结束线程了,耗时线程做退出前的回收处理然后自己结束线程。 自定义标志位终止 使用v 阅读全文
posted @ 2020-07-13 14:06 夜空中最亮的盖子 阅读(1695) 评论(0) 推荐(0)
摘要:强引用 在Java中使用如下方式声明的引用是强引用 String str = new String("abc"); str 是堆中对象new String("abc")的强引用,被强引用的对象在任何时候gc不会被回收,即使内存不足汇报OOM。 软引用 在Java中使用如下方式声明的引用是软引用 So 阅读全文
posted @ 2020-07-12 20:21 夜空中最亮的盖子 阅读(402) 评论(0) 推荐(0)
摘要:Android生命周期起始在Application这个实例。 简单使用 默认是没有的,需要自己手动写一个继承Application。 public class LearnApplication extends Application { private static final String TAG 阅读全文
posted @ 2020-07-08 21:21 夜空中最亮的盖子 阅读(849) 评论(0) 推荐(0)
摘要:基于流行度 这种算法比较简单,按所有用户的点击量排序呈现给用户,按热度数据推荐给每个用户。弊端就是每个用户看到的都是一样的,无法个性化推荐,微博排行榜就是个比较好的例子。 协同过滤算法 基于用户 分析各个用户对物品的评价(浏览次数,停留时间,购买次数) 依据用户对物品的评价计算得出所有用户之间的相似 阅读全文
posted @ 2020-07-08 19:15 夜空中最亮的盖子 阅读(272) 评论(0) 推荐(0)
摘要:问题来源 这是字节面试官问的,当时答的不是很好,准备不充分,只能讲了下Android的事件分发机制。 消费顺序 Button消费了几个Move事件后,接下来的Move都被Scrollview消费了 代码解读 在Scrollview的源代码里,可以看到onInterceptTouchEvent方法中, 阅读全文
posted @ 2020-07-08 15:47 夜空中最亮的盖子 阅读(370) 评论(0) 推荐(1)
摘要:这道题是字节的面试题,当场问我有点紧张没想出来,只答上来要交替阻塞,还是面试官提醒我用生产者消费者思路解决。 题目 有A类线程50个,任务是打印字符A。有B类线程50个,任务是打印字符B。现在异步启动这100个线程,问如何才能让他们交替打印AB字符? 解题思路 设两个信号SemaphoreA和Sem 阅读全文
posted @ 2020-07-08 10:15 夜空中最亮的盖子 阅读(893) 评论(0) 推荐(0)
摘要:EventBus是什么 Android组件间通信。Handler和广播也可以通信,但是Eventbus更加简便 导入包 implementation 'org.greenrobot:eventbus:3.2.0' 使用 1. 声明消息传递结构体,不同业务应该用不同的结构体,最好写个基类管理 publ 阅读全文
posted @ 2020-07-07 21:43 夜空中最亮的盖子 阅读(161) 评论(0) 推荐(0)
摘要:问题的由来: 这是字节跳动客户端面试官问的一个问题,当时就问懵逼了,2个各自的生命周期是怎样的实在不清楚。最后只能说了下单个Activity的生命周期是怎样的,感觉面试官不是很满意,他让我回去看看。 A活动启动B活动 当B活动显示并且可以获取焦点且A活动完全不可见时,A活动会再调用onStop。A活 阅读全文
posted @ 2020-07-07 19:50 夜空中最亮的盖子 阅读(286) 评论(0) 推荐(0)
摘要:泛型对象可以实例化吗? 不可以,T t=new T()是不可以的,编译器会报错。由于泛型擦除,编译器在编译时无法确定泛型所对应的真实类型 解决方法 使用反射新建实例 Type superclass = getClass().getGenericSuperclass(); ParameterizedT 阅读全文
posted @ 2020-07-06 21:49 夜空中最亮的盖子 阅读(9423) 评论(0) 推荐(1)
摘要:android { compileSdkVersion 30 buildToolsVersion "30.0.0" defaultConfig { applicationId "com.billshen.offerlearn" minSdkVersion 15 targetSdkVersion 30 阅读全文
posted @ 2020-07-06 15:59 夜空中最亮的盖子 阅读(2261) 评论(0) 推荐(0)
摘要:一面 项目 讲一讲电梯的各个模式是怎么实现的 职业规划 想做哪一块的研发 手撕代码 二叉树层次遍历 回到原点 二面 聊人生 讲一讲电梯项目的各个模块 家里几兄弟,加班爸妈心疼吗 如何看待华为的企业文化 实习有什么要求,什么时候可以来 实习具体做什么,是否可转正 后续 感觉面试有点水,HR存在忽悠我的 阅读全文
posted @ 2020-07-05 20:49 夜空中最亮的盖子 阅读(583) 评论(0) 推荐(0)
摘要:Java JVM内存模型 GC过程 堆中创建大对象 项目 两篇EI论文几作? 算法比赛几个人参加 职业规划 适应性和抗压能力怎么样 未来想做哪一块的 阅读全文
posted @ 2020-07-05 20:40 夜空中最亮的盖子 阅读(507) 评论(0) 推荐(0)
摘要:职业规划 想做开发还是算法 Android Bitmap的内存占用,ARGB_8888占几个字节,采样率inSampleSize Activity,Fragment生命周期,A活动启动B活动各自的生命周期 说出一种图形加载库的原理 事件分发机制,ScrollView嵌套Button事件消费 Java 阅读全文
posted @ 2020-07-05 20:20 夜空中最亮的盖子 阅读(343) 评论(0) 推荐(0)