当前位置: 首页 > news >正文

Android 斗鱼面经

Android 斗鱼面经

文章目录

  • Android 斗鱼面经
    • 一面
    • 二面

一面

  1. 先简单描述一下JVM JRE JDK的关系

:::info
JVM(Java Virtual Machine)

Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,JVM 是 Java 能够跨平台的核心。

JRE (Java Runtime Environment)

Java 运行时环境。它主要包含两个部分,JVM的标准实现和 Java 的一些基本类库。它相对于 JVM来说,多出来的是一部分的 Java 类库。

JDK (Java Development Kit)

Java 开发工具包。JDK 是整个 Java 开发的核心,它集成了 JRE 和一些好用的小工具,例如javac.exe、java.exe、jar.exe 等。

显然这三者的关系是一层层的嵌套关系,即JDK > JRE > JVM。

:::

  1. 静态代理和动态代理有什么区别吗,静态代理和动态代理的应用场景

:::info
1、静态代理通常只代理一个类,动态代理是代理一个接口下的多个实现类。

2、静态代理事先知道要代理的是什么,而动态代理不知道要代理什么东西,只有在运行时才知道。

3、动态代理是实现JDK里的InvocationHandler接口的invoke方法,但注意的是代理的是接口,也就是你的业务类必须要实现接口,通过Proxy里的newProxyInstance得到代理对象。

应用场景:如果⽬标类的数量很多的话,代理类的实现也必然得很多,可能会造成代码量过于庞⼤,可能会增加代码的冗余度…再者,如果⽬标类需要代理的⽅法很多的话,代理类需要对这些⽅法⼀⼀实现代理逻辑,代理类的实现也将会很庞⼤。目标对象不固定,在应用程序执行时,动态创建目标对象。这时候使用动态代理,目标角色固定,应用程序执行前就得到目标角色,这时候使用静态代理

:::

  1. leakcanaryd有看过吗?
  2. 四大引用
  3. JVM垃圾回收新生代是怎么进行划分的
  4. Android里面原生设计的设计模式举例分析一下

:::info
建造者模式:Android#AlertDialog Bitmap#Bulider

观察者模式:View#OnClickListener

单例模式:Application

责任链:Okhttp拦截器模式

适配器:RecyclerView.Adapter

推荐阅读:

从Android源码角度谈设计模式(一):创建型模式 - 掘金

从Android源码角度谈设计模式(二):结构型模式 - 掘金

从Android源码角度谈设计模式(三):行为型模式 - 掘金

:::

  1. 单例模式有哪几种实现方式
  2. Handler机制了解过吗?
  3. 斗鱼App主页的启动模式
  4. 怎么判断下载的软件已经被下载过,或者下载软件百分比

:::info
1.通过获取系统上已安装的所有app列表来查找【不推荐。因为要获取已安装的所有app信息,可能会有隐私泄露风险】

:::

public static boolean checkAppInstalled(Context context, String pkgName) {if (TextUtils.isEmpty(pkgName)) {return false;}PackageManager packageManager = context.getPackageManager();// 获取已安装的app信息List<PackageInfo> pkgInfos = packageManager.getInstalledPackages(0);if (pkgInfos != null) {for (int i = 0; i < pkgInfos.size(); i++) {String pkg = pkgInfos.get(i).packageName;if (pkgName.equals(pkg)) {return true;}}}return false;
}

:::info
2.通过获取特定包名的app信息来判断【推荐。因为只关注特定包名的app信息,隐私泄露风险低】

:::

public static boolean checkQQInstalled(Context context, String pkgName) {if (TextUtils.isEmpty(pkgName)) {return false;}try {context.getPackageManager().getPackageInfo(pkgName, 0);} catch (Exception x) {return false;}return true;
}

二面

这一面主要是项目和实习经验,基本都是考验你项目里面学到了什么,积累了什么

  1. Gson是怎么做数据解析的,怎么进行高效数据解析?

相关文章:

Android 斗鱼面经

Android 斗鱼面经 文章目录 Android 斗鱼面经一面二面 一面 先简单描述一下JVM JRE JDK的关系 :::info JVM&#xff08;Java Virtual Machine&#xff09; Java 虚拟机。它只认识 xxx.class 这种类型的文件&#xff0c;它能够将 class 文件中的字节码指令进行识别并调用操作…...

【机器学习】26. 聚类评估方法

聚类评估方法 1. Unsupervised Measure1.1. Method 1: measure cohesion and separationSilhouette coefficient Method 2&#xff1a;Correlation between two similarity matricesMethod 3&#xff1a;Visual Inspection of similarity matrix 2. Supervised measures3. 决定…...

linux 最多能创建多少个 TCP 连接?

linux 最大允许TCP连接数 约束一&#xff1a;服务器的端口范围约束二&#xff0c;服务器文件描述符限制约束三&#xff1a;系统线程约束四&#xff1a;系统内存总结 tcp连接四元组&#xff1a;源ip&#xff0c;源端口 <> 目标ip&#xff0c;目标端口 连续对同一个目标ip及…...

我为何要用wordpress搭建一个自己的独立博客

我在csdn有一个博客&#xff0c;这个博客是之前学习编程时建立的。 博客有哪些好处呢&#xff1f; 1&#xff0c;可以写自己的遇到的问题和如何解决的步骤 2&#xff0c;心得体会&#xff0c;经验&#xff0c;和踩坑 3&#xff0c;可以转载别人的好的技术知识 4&#xff0c;宝贵…...

Linux系统每日定时备份mysql数据

一、创建存储脚本的文件夹 创建文件夹&#xff0c;我的脚本放在/root/dbback/mysql mkdir ... cd /root/dbback/mysql 二、编写脚本 vi backup_mysql.sh 复制脚本内容 DB_USER"填写用户名" DB_PASSWORD"填写密码" DB_NAME"数据库名称" # …...

书生大模型第一关Linux基础知识

任务一&#xff1a;完成SSH连接与端口映射并运行hello_world.py 1.SSH及其端口映射 2.在VSCode中安装插件&#xff1a; 3.创建开发机 最后点击创建&#xff0c;然后可能需要等待一段较长的时间&#xff0c;大概需要5分钟左右&#xff0c;如果需要排队则更长时间 然后选择…...

机器学习之fetch_olivetti_faces人脸识别--基于Python实现

fetch_olivetti_faces 数据集下载 fetch_olivetti_faceshttps://github.com/jikechao/olivettifaces sklearn.datasets.fetch_olivetti_faces(*, data_homeNone, shuffleFalse, random_state0, download_if_missingTrue, return_X_yFalse, n_retries3, delay1.0)[source] L…...

【系统设计】深入理解HTTP缓存机制:从Read-Through缓存到HTTP缓存的交互流程

在现代Web开发中&#xff0c;缓存机制扮演着至关重要的角色。它不仅提升了用户体验&#xff0c;还极大地优化了资源的使用效率。在这篇博文中&#xff0c;我们将从“Read-Through”缓存的概念出发&#xff0c;深入探讨HTTP缓存的工作原理和交互流程&#xff0c;并详细描述max-a…...

FLINK单机版安装部署入门-1

文章目录 FLINK单机版安装部署高于1.9.3需要修改配置文件flink-conf.yaml(低于1.9.3可以跳过)linux启动集群windows下启动Flink实例运行(单机)还有一种方式是上传任务包运行examples\streamingjava: Compilation failed: internal java compiler error高版本启动脚本 FLINK单机…...

深度学习-学习率调整策略

在深度学习中&#xff0c;学习率调整策略&#xff08;Learning Rate Scheduling&#xff09;用于在训练过程中动态调整学习率&#xff0c;以实现更快的收敛和更好的模型性能。选择合适的学习率策略可以避免模型陷入局部最优、震荡不稳定等问题。下面介绍一些常见的学习率调整策…...

【学员提问bug】小程序在onUnload里面调接口,用来记录退出的时间, 但是接口调用还没成功, 页面就关闭了。如何让接口在onUnload关闭前调用成功?

这种问题比较通用&#xff0c;并不涉及到具体方法执行障碍&#xff0c;所以&#xff0c;解决起来也不麻烦。但是新手往往不知道如何做。 在小程序中&#xff0c;如果在 onUnload 中调用 API 记录页面退出时间&#xff0c;但因为页面关闭速度较快导致请求未完成&#xff0c;可以…...

【刷题13】链表专题

目录 一、两数相加二、两两交换链表的节点三、重排链表四、合并k个升序链表五、k个一组翻转链表 一、两数相加 题目&#xff1a; 思路&#xff1a; 注意整数是逆序存储的&#xff0c;结果要按照题目的要求用链表连接起来遍历l1的cur1&#xff0c;遍历l2的cur2&#xff0c;和…...

Python Turtle模块详解与使用教程

Python Turtle模块详解与使用教程 引言 Python是一种广泛使用的编程语言&#xff0c;其简洁易读的语法使得它成为初学者学习编程的理想选择。而Turtle模块则是Python标准库中一个非常有趣且实用的图形绘制工具&#xff0c;特别适合用于教育和学习编程的基础知识。通过Turtle模…...

【PTA】4-2 树的同构【数据结构】

给定两棵树 T1​ 和 T2​。如果 T1​ 可以通过若干次左右孩子互换就变成 T2​&#xff0c;则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的&#xff0c;因为我们把其中一棵树的结点A、B、G的左右孩子互换后&#xff0c;就得到另外一棵树。而图2就不是同构的。 图一…...

Node.js——fs模块-同步与异步

本文的分享到此结束&#xff0c;欢迎大家评论区一同讨论学习&#xff0c;下一篇继续分享Node.js的fs模块文件追加写入的学习。...

Java基于微信小程序的私家车位共享系统(附源码,文档)

博主介绍&#xff1a;✌stormjun、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

vscode 创建 vue 项目时,配置文件为什么收缩到一起展示了?

一、前言 今天用 vue 官方脚手架创建工程&#xff0c;然后通过 vscode 打开项目发现&#xff0c;配置文件都被收缩在一起了。就像下面这样 这有点反直觉&#xff0c;他们应该是在同一层级下的&#xff0c;怎么会这样&#xff0c;有点好奇&#xff0c;但是打开资源管理查看&…...

PySpark任务提交

一般情况下&#xff0c;spark任务是用scala开发的&#xff0c;但是对于一些偏业务人员&#xff0c;或者是基于上手的来说python的API确实降低了开发前置条件的难度&#xff0c;首当其冲的就是能跳过Java和Scala需要的知识储备&#xff0c;但是在提交任务到集群的时候就很麻烦了…...

【果蔬购物商城管理与推荐系统】Python+Django网页界面+协同过滤推荐算法+管理系统网站

一、介绍 果蔬购物管理与推荐系统。本系统以Python作为主要开发语言&#xff0c;前端通过HTML、CSS、BootStrap等框架搭建界面&#xff0c;后端使用Django框架作为逻辑处理&#xff0c;通过Ajax实现前后端的数据通信。并基于用户对商品的评分信息&#xff0c;采用协同过滤推荐…...

【大模型】海外生成式AI赛道的关键玩家:OpenAI、Anthropic之外还有谁?

引言 在生成式AI快速发展的今天&#xff0c;不同公司在各自领域发挥着独特作用。本文将从基础模型研发、开发工具框架、垂直领域应用三个维度&#xff0c;为读者梳理当前生成式AI技术领域的主要参与者&#xff0c;帮助开发者更好地把握技术发展方向。 一、基础模型研发公司 O…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...