面试笔试题
文章平均质量分 53
面试问题,笔试题目。
zhangjin1120
这个作者很懒,什么都没留下…
展开
-
GLSurfaceView 与 SurfaceView 联系与区别
上图的英文第1条对应的是 C选项。英文第2条对应的是D选项。英文第4条是A选项。显示视频、相机预览、显示OpenGL。原创 2023-06-01 09:20:49 · 587 阅读 · 0 评论 -
Activity如何与Service通信?
目录直接new 一个Service对象,然后mService.setValue()不行吗?如何在Activity中获取一个已创建的Service对象?Activity与Service通信的方式有哪些?直接new 一个Service对象,然后mService.setValue()不行吗?不行,因为Service从创建到启动涉及到新进程创建和跨进程通信,应用层自己写任务量很大。Service的启动流程:Process A进程采用Binder IPC向system_server进程发起startServ原创 2022-04-06 09:30:20 · 3487 阅读 · 2 评论 -
SurfaceView为什么不能做动画?
目录Android屏幕绘制流程是什么?SurfaceView为什么不能做动画?TextureView也可以实现视频播放,为什么TextureView可以做动画?Android屏幕绘制流程是什么?从View.invalidate到view.draw的大致流程如下:View.draw之后的流程涉及到系统服务SurfaceFlinger,下面是硬件加速的流程:下面是软件加速的绘制流程:SurfaceView为什么不能做动画?SurfaceView直接继承自View,自己重写了View的draw方原创 2022-04-03 15:05:12 · 2016 阅读 · 0 评论 -
SELECT ename,sal FROM emp WHERE sal<(SELECT min(sal) FROM emp)+1000; 是什么意思?
某次笔试原题目:以下语句的作用是?SELECT ename,sal FROM emp WHERE sal<(SELECT min(sal) FROM emp)+1000;A. 显示工资低于1000元的雇员信息B. 将雇员工资小于1000元的工资增加1000后显示C. 显示超过最低工资1000元的雇员信息D. 显示不超过最低工资1000元的雇员信息先说答案:选D。但是题目不严谨,不超过的范围不一定是1000,可能是2000.实践测试,看看到底查询的是啥?第一次测试结果如下,查询的原创 2022-03-04 12:34:44 · 1357 阅读 · 0 评论 -
Activity与Fragment的区别是什么?
Activity间接继承Context,Fragment继承Object。设备屏幕一层只显示一个Activity, 但是Activity里面可以有多个Fragment。Activity是四大组件之一,需要在AndroidManifest.xml中注册,可以作为接收intent的载体。使用Fragment不需要在AndroidManifest.xml文件中注册,Fragment也不能作为intent跳转的对象。Activity里面可以没有Fragment,但是Fragment不能脱离Activity而.原创 2022-02-27 13:41:54 · 3605 阅读 · 0 评论 -
Fragment相关梳理
向Fragment传递参数,为什么用setArgument(),而不自定义变量再set赋值?原创 2022-02-27 13:00:55 · 120 阅读 · 0 评论 -
向Fragment传递参数,为什么用setArgument(),而不自定义变量再set赋值?
自定义变量,然后用set方法赋值,或者给构造方法赋值,会出什么问题?设备横竖屏切换的时候,Fragment的自定义变量,数据会丢失。具体代码验证效果,这篇文章说的很清楚:屏幕旋转Fragment数据丢失。用构造方法传参,为什么会数据丢失?设备横竖屏切换的话,当前展示给用户的Activity默认情况下会重新创建并展现给用户,依附于Activity的Fragment也会重新创建。具体过程一步一步分析:setArguments()是如何保存数据的? public void setArguments(B原创 2022-02-27 12:53:21 · 1287 阅读 · 0 评论 -
synchronized相关梳理
synchronized修饰方法、static方法、this、.class、obj的代码示例synchronized关键字修饰非静态方法和修饰静态方法有什么区别?原创 2022-02-26 01:06:34 · 123 阅读 · 0 评论 -
ARouter的原理
ARouter简介ARouter 是阿里开源的一款帮助 Android APP 进行组件化改造的路由框架,可以实现在同一个项目中互不依赖的的模块的 Activity 之间跳转。ARouter 的路由、参数和拦截器都是用注解来标注的。注解在 Retrofit、Dagger 和 EventBus 中都有使用。ARouter 的跳转是基于路由表 RouterMap 实现的,负责生成路由表的是 RouteProcessor ,负责加载路由表的是 LogisticsCenter 或 RegisterTransf原创 2022-02-24 21:37:52 · 1332 阅读 · 0 评论 -
面向对象的三个基本特征
封装、继承、多态三者的含义是什么?封装书面定义: 将数据和方法包装进类中,并把具体实现隐藏被称作是封装(encapsulation)。摘自《Java编程思想》第五版第七章)实用场景:一、将具有类似功能的方法封装在一个工具类中,例如日期格式转换工具类。二、将成员变量私有化,通过get和set读写。具体实现:通过包和访问修饰符,将不希望被修改的内部类、变量、方法私有化,即添加private关键字。这样,在类的外部,对象不能访问或修改它们。继承书面定义:创建现有类类型的新类。采用现有类原创 2022-02-21 02:58:26 · 121 阅读 · 0 评论 -
平衡二叉搜索树查找的时间复杂度为什么是O(log n)?
二叉搜索树的搜索的时间复杂度,会因为具体结构不同而不同,只有右子树的情况下,时间复杂度是O(n)。平衡的情况下,时间复杂度是O(logn)。这个O(logn)是怎么来的?n个结点的二叉搜索树的高度是多少?只有1个根节点的二叉搜索树,高度为1。log2(1)=0,0+1=1;2,3个结点的二叉搜索树,高度为2。log2(2)=1,1+1=2;4,5,6,7个结点的二叉搜索树,高度为3。log2(7) < 3,log2(7)取整+1为3。N个结点的二叉搜索树,高度是[log2(N)]+1.原创 2021-11-09 23:18:11 · 8297 阅读 · 2 评论 -
java不可变类和不可变对象
什么是不可变对象?下面是《Effective Java》这本书对于不可变对象的定义:不可变对象(Immutable Object):对象一旦被创建后,对象所有的状态及属性在其生命周期内不会发生任何变化。不可变对象就是不可变类的实例,那么什么是不可变类?从程序的角度讲:类一般用final修饰,不可被继承。不提供set方法,修改对象属性如果要修改方法,需要创建一个新的对象,然后修改状态。常见的不可变类有哪些?String,Integer,其他包装类不可变对象的好处是什么?有原创 2021-10-29 23:45:00 · 564 阅读 · 0 评论 -
ButterKnife省略findViewById的原理
ButterKnife是JakeWhartorn及其他程序员开发的第三方库。ButterKnife源码地址:ButterKnife.java为什么大公司都不用ButterKnife了?原创 2021-10-28 13:46:46 · 126 阅读 · 0 评论 -
内存泄漏(一)MVP模式中的内存泄漏以及解决方案
MVP模式为什么会存在内存泄漏的隐患? 当用户按返回键时,页面Activity退出,如果Model在子线程上执行耗时任务,还没有结束,Model持有Presenter的引用,Presenter持有Activity的引用。那么这个Activity对象就没有办法被回收。怎么解决这个内存泄漏? 在Activity的onDestroy方法中,通过Presenter间接将Model中的耗时任务取消,然后将Presenter和Model置空。既然这样可以解决内存泄漏,为什么还要用弱引用(也有代码中用..原创 2021-10-24 22:24:40 · 2348 阅读 · 0 评论 -
synchronized修饰方法、static方法、this、.class、obj的代码示例
在static方法中,synchronized(XX.class){...}public class PrintFruit { public static void printA(){ System.out.println(new SimpleDateFormat("HH:mm:ss").format(new Date())+" Apple"); } public static void printB(){ System.out.println(n原创 2021-10-09 10:26:56 · 435 阅读 · 0 评论 -
JVM和Dalvik虚拟机的区别
JVM归Oracle公司所有,Google工程师要使用JVM,需要获得授权许可,这意味着要缴纳大量的费用。JVM使用基于栈的指令集,基于栈的指令集,具备可移植性。如果使用基于寄存器的指令集,会受到寄存器的硬件约束。例如:现在Intel 32位80x86体系的处理器中提供了8个32位的寄存器,而ARM体系的CPU(在当前的手机、PDA中相当流行的一种处理器)则提供了16个32位的通用寄存器。所以JVM主要解决跨平台问题。但是执行速度会慢一些。Dalvik使用基于寄存器的指令集,寄存器由硬件直接提供,是C.原创 2021-09-27 14:23:44 · 144 阅读 · 0 评论 -
android系统体系架构
传统的4层架构应用层(Application)应用框架层(Application Framework)本地库和Android 运行库Linux内核层目前的5层架构系统应用层Java API Framework层Native C/C++ Library层和 Android Runtime层硬件抽象层(Hardware Abstraction Layer),HALLinux Kernel...原创 2021-09-25 17:13:53 · 109 阅读 · 0 评论 -
如何在牛客网上记录面试问答
找到讨论区,在下拉菜单中选择”讨论区“。找到“我要发布”按钮。第一次写文章前,有几道答题。文章编辑区如下:原创 2021-09-24 21:33:09 · 238 阅读 · 0 评论 -
RecyclerView与ListView的区别
RecyclerView有4级缓存,ListView只有两级缓存。原创 2021-09-23 15:30:10 · 71 阅读 · 0 评论 -
Socket相关
socket与TCP/IP协议的关系是什么?java.net包中,确实有Socket类,还有SSLSocket类。原创 2021-08-02 19:56:23 · 50 阅读 · 0 评论 -
MVP模式
与传统MVC不同的是,mvp的数据请求是在Model里面做的,传统mvc模式的网络请求是在V层Activity做的。原创 2020-04-09 15:37:33 · 99 阅读 · 0 评论 -
LinkedList相关面试题
LinkedList是的数据结构是双向链表,可用作队列和栈。原创 2021-07-24 14:36:43 · 622 阅读 · 0 评论 -
ArrayList相关面试题
ArrayList线程不安全,线程安全的列表有Vector,Collections.synchronizedList(), CopyOnWriteArrayList,线程不安全的list有:ArrayList、LinkedList。ArrayList扩容倍数是1.5倍。int newCapacity = oldCapacity + (oldCapacity >> 1);ArrayList扩容分析...原创 2021-07-24 00:17:49 · 53 阅读 · 0 评论