小米安卓春招面试一面

人不走空

                                                                      

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

目录

1.多态

2.hashmap,hashtable和concurrenthashmap,问的定义实现和区别

3.jvm的运行时数据区域有哪些,作用

4.四种引用类型

5.类加载-双亲委派机制

6.多线程情况下的共享资源访问问题有哪些,怎么解决

7.结合项目讲讲锁

8.GC回收算法,分代回收算法以及对应的新生代老生代用的什么回收算法

9.tcp和udp区别

10.http和https的区别

11.https的密钥

12.返回链表的倒数第k个值

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

作者其他作品:


  • 多态: 多态是指同一个方法调用由于对象不同可能会产生不同的行为。在Java中,多态性可以通过继承和接口实现。具体而言,多态是指父类或接口的引用变量可以指向子类的对象,通过父类或接口中定义的方法来调用实现类的方法。

  • HashMap,Hashtable和ConcurrentHashMap的定义、实现和区别

    • HashMap:HashMap是基于哈希表的Map接口实现,它不是线程安全的,允许null键和null值。
    • Hashtable:Hashtable也是基于哈希表的Map接口实现,与HashMap相比,它是线程安全的,不允许null键和null值。
    • ConcurrentHashMap:ConcurrentHashMap是线程安全的HashMap的替代品,在并发情况下执行更好。它通过分段锁(Segment)来实现线程安全,允许高并发访问,可以同时读取而不需要加锁,提高了并发性能。

  • JVM的运行时数据区域和作用

    • 程序计数器:线程私有,指向当前线程正在执行的字节码指令的地址。
    • Java虚拟机栈:线程私有,存储方法的局部变量、操作数栈、动态链接、方法出口等信息。
    • 本地方法栈:线程私有,为执行Native方法服务。
    • :存储对象实例,是线程共享的内存区域。
    • 方法区:存储类信息、常量、静态变量等数据。
    • 运行时常量池:方法区的一部分,存放编译期生成的各种字面量和符号引用。

  • 四种引用类型

    • 强引用:最常见的引用类型,只要存在强引用,对象就不会被垃圾回收器回收。
    • 软引用:用于描述一些还有用但并非必需的对象,在系统即将发生内存溢出之前,会将这些对象列入回收范围。
    • 弱引用:比软引用更弱的引用类型,只能存活到下一次垃圾回收之前。
    • 虚引用:也称为幽灵引用或者幻影引用,不能单独使用,必须与引用队列联合使用。用于跟踪对象被垃圾回收的状态。

  • 类加载-双亲委派机制

    类加载的双亲委派机制是 Java 类加载机制的一种重要原则。其核心思想是当一个类加载器收到加载类的请求时,它会先将这个请求委托给父类加载器去完成,只有在父类加载器无法完成加载的情况下,子类加载器才会尝试自己去加载。

    具体来说,当一个类加载器需要加载一个类时,它会先询问其父加载器是否已经加载了这个类。如果父加载器已经加载了,就直接返回父加载器所加载的类;如果父加载器没有加载,那么该类加载器会尝试自己加载这个类。这个机制在 Java 中是通过 ClassLoader 类的 loadClass() 方法实现的。

    双亲委派机制的优点在于它可以保证 Java 类的唯一性,防止重复加载,同时也可以保证 Java 类的安全性,因为核心类库是由启动类加载器加载的,而开发者编写的类通常由应用类加载器加载,这样可以防止开发者意外或恶意地替换核心类库中的类。

    总的来说,类加载的双亲委派机制有助于保证类加载的顺序和唯一性,同时也有利于 Java 的安全性和稳定性。

  • 多线程情况下的共享资源访问问题: 多线程情况下可能会出现竞态条件、死锁、活锁等问题。解决方法包括使用同步机制(synchronized、Lock)、使用并发容器(如ConcurrentHashMap)、避免共享资源等。

  • 结合项目讲讲锁: 这个问题需要根据你所涉及的项目具体情况进行回答,比如在Java项目中可能会使用synchronized关键字、ReentrantLock、ReadWriteLock等来实现锁机制,用于保护共享资源的访问。

  • GC回收算法、分代回收算法以及对应的新生代老生代用的什么回收算法: 常见的GC回收算法包括标记-清除、复制、标记-整理等。Java中的分代回收算法将堆内存分为新生代和老生代,新生代通常使用复制算法(如Serial、ParNew、G1的部分区域),老生代通常使用标记-清除或标记-整理算法(如CMS、G1)。

  • TCP和UDP区别: TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种常用的网络传输协议,它们在网络通信中扮演不同的角色。TCP是一种面向连接的协议,通信双方在传输数据前需要建立连接,然后进行可靠的数据传输,最后释放连接。TCP提供可靠的数据传输,确保数据按照发送的顺序到达,并且无差错地到达目的地。相比之下,UDP是一种无连接的协议,通信双方在传输数据前不需要建立连接,也不需要进行连接的释放。UDP以数据报的形式传输数据,每个数据报都是一个完整的消息单元,不提供数据传输的可靠性保证,发送的数据报可能会丢失或者乱序。由于TCP提供了可靠性、顺序性以及连接管理等特性,适用于需要可靠传输的应用场景,如网页浏览、文件下载等;而UDP则适用于对传输延迟要求较高、对可靠性要求较低的应用场景,如实时音视频传输、在线游戏等。

  • HTTP和HTTPS的区别

    HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。

    HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。

    两者的默认端口不一样,HTTP 默认端口号是 80,HTTPS 默认端口号是 443。

    HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

  • HTTPS的密钥: HTTPS使用非对称加密和对称加密相结合的方式进行通信。在握手阶段,客户端和服务器端会协商出对称加密算法和密钥,然后使用对称加密算法进行通信。

  • 返回链表的倒数第k个值: 这可以通过快慢指针来实现。具体做法是让一个指针先移动k步,然后让另一个指针从头开始和第一个指针一起移动,当第一个指针到达链表尾部时,第二个指针就指向了倒数第k个节点。

class ListNode {int val;ListNode next;ListNode(int val) {this.val = val;}
}public class Solution {public ListNode getKthFromEnd(ListNode head, int k) {if (head == null || k <= 0) {return null;}ListNode slow = head;ListNode fast = head;// 让快指针先移动k步for (int i = 0; i < k; i++) {if (fast == null) {return null; // 如果链表长度小于k,则返回null}fast = fast.next;}// 快慢指针一起移动,直到快指针到达链表末尾while (fast != null) {slow = slow.next;fast = fast.next;}// 此时慢指针即指向倒数第k个节点return slow;}public static void main(String[] args) {// 创建一个链表: 1 -> 2 -> 3 -> 4 -> 5ListNode head = new ListNode(1);head.next = new ListNode(2);head.next.next = new ListNode(3);head.next.next.next = new ListNode(4);head.next.next.next.next = new ListNode(5);Solution solution = new Solution();int k = 2;ListNode result = solution.getKthFromEnd(head, k);// 打印倒数第k个节点的值if (result != null) {System.out.println("倒数第 " + k + " 个节点的值为: " + result.val);} else {System.out.println("链表长度小于 " + k + ",无法找到倒数第 " + k + " 个节点");}}
}

作者其他作品:

【Java】Spring循环依赖:原因与解决方法

OpenAI Sora来了,视频生成领域的GPT-4时代来了

[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读

【Java】深入理解Java中的static关键字

[Java·算法·简单] LeetCode 28. 找出字a符串中第一个匹配项的下标 详细解读

了解 Java 中的 AtomicInteger 类

算法题 — 整数转二进制,查找其中1的数量

深入理解MySQL事务特性:保证数据完整性与一致性

Java企业应用软件系统架构演变史

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02 - ArcGIS For JavaScript-矢量数据的符号化处理(Symbol)

文章目录 综述Symbol的分类Point的符号化Point符号化为二维几何&#xff1a;Point位图符号化&#xff1a;Point的三维结合符号化Point 符号化为GLTF模型 PolylineSymbol-线符号化基本样式管道样式墙体样式条带样式方管样式 PolygonSymbol-面符号化水面效果拉伸效果填充效果 Mes…

PCB----Allegro软件使用小技巧

1.修改画好的同面积&#xff1a; 2.修改铜的网络&#xff0c;或者铺铜铺错网络了&#xff1a; 点击需要修改的铜 在点击要修改成的网络 3.铺铜需要注意&#xff1a; 铜片和铜片之间间隔2个点&#xff08;点设置6.25&#xff0c;如下图1-2&#xff1a;&#xff09; 每一个单独的…

差速机器人模型LQR 控制仿真——路径模拟

LQR路径跟踪要求路径中带角度&#xff0c;即坐标&#xff08;x,y,yaw&#xff09;&#xff0c;而一般我们的规划出来的路径不带角度。这里通过总结相关方法&#xff0c;并提供一个案例。 将点路径拟合成一条完整的线路径算法 将点路径拟合成一条完整的线路径是一个常见的问题…

每日一题 — 最小覆盖子串

76. 最小覆盖子串 - 力扣&#xff08;LeetCode&#xff09; 解法一&#xff1a;暴力遍历哈希表 解法二&#xff1a;滑动窗口哈希表 定义left和right初始化为零&#xff0c;固定left&#xff0c;先向右遍历right&#xff0c;放到哈希表中这个时候我们需要统计有效字符的个数&…

五种主流数据库:集合运算

关系型数据库中的表与集合理论中的集合类似&#xff0c;表是由行&#xff08;记录&#xff09;组成的集合。因此&#xff0c;SQL 支持基于数据行的各种集合运算&#xff0c;包括并集运算&#xff08;Union&#xff09;、交集运算&#xff08;Intersect&#xff09;和差集运算&a…

chromedriver最新版下载地址

地址1.百度网盘 链接(提取码&#xff1a;2vo3)&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com…

数据很重要,ASM磁盘组损坏,使用AMDU来抢救

欢迎关注“数据库运维之道”公众号&#xff0c;一起学习数据库技术! 本期将为大家分享“数据很重要&#xff0c;ASM磁盘组损坏&#xff0c;使用AMDU来抢救”的处置案例。这个案例对个人来说比较经典&#xff0c;下面我将把自己的处理思路进行整理与总结。 环境信息&#xff1…

安装Milvus的可视化工具Attu教程

提供两种方式来安装可视化工具Attu 一、docker安装 # 执行命令&#xff0c;加个 -d 在后台运行 docker run -d -p 8000:3000 -e MILVUS_URL127.0.0.1:19530 zilliz/attu:v2.2.8 至此安装完成&#xff01; 浏览器输入地址 http:127.0.0.1:8000即可访问 Attu主页 如果拉取最新…

大数据操作第二天

文章目录 大数据命令的方式现在有三个命令的方式 启动一个计算圆周率的jar包方式什么是文件系统数据元数据传统的存储方式分布式存储方式元数据记录文件位置信息副本机制的方式 hafs 存储方式shell 操作大数据的方式创建目录查看文件目录下的方式上传文件的方式 大数据命令的方…

2024年国内五大企业邮箱,哪个最靠谱?

电子邮件是企业办公的重要手段&#xff0c;目前我国五大企业的邮箱都有Zoho Mail公司邮箱、腾讯企业邮箱、阿里企业邮箱、网易企业邮箱、263公司邮箱。可是哪个电子邮件最可靠呢&#xff1f;可靠的企业邮箱必须要安全性高、稳定性高&#xff0c;能够保护企业的隐私不被泄露&…

Git常见命令行操作和IDEA图形化界面操作

设置Git用户名和标签 在安装完Git以后需要设置用户和签名&#xff0c;至于为什么要设置用户签名可以看一下这篇文章【学了就忘】Git基础 — 11.配置Git用户签名说明 - 简书 (jianshu.com) 基本语法&#xff1a; git config --global user.name 用户名 git config --global u…

HTML学习笔记:(一)基础方法

Html格式 里面文件使用平台为&#xff1a;w3school 1、基础功能&#xff1a; <html><head> <title>这是我的第一个html页面,会显示在浏览器的标题栏中</title> </head> <!--修改背景颜色 --> <body bgcolor"yellow"> …

浅浅了解一下 LibTorch

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ LibTorch 是 PyTorch 提供的一个二进制发行版&#xff0c;包含了所有必要的头文件、库和 CMake 配置文件&#xff0c;便于开发者依赖 PyTorch 开发应用。用户可以从 PyTorch 官网下载包含最新 LibTorch…

Vitis HLS 学习笔记--scal 函数-探究

目录 1. Vitis HLS重器-Vitis_Libraries 2. 初识scal() 3. 函数具体实现 3.1 变量命名规则 3.2 t_ParEntries解释 3.3 流类型详解 3.4 双重循环 4. 总结 1. Vitis HLS重器-Vitis_Libraries 在深入探索Vitis HLS&#xff08;High-Level Synthesis&#xff09;的旅程中&…

【Leetcode】代码随想录Day16|二叉树3.0

文章目录 104 二叉树的最大深度559 n叉树的最大深度111 二叉树的最小深度222 完全二叉树的节点个数 104 二叉树的最大深度 递归法&#xff1a;无论是哪一种顺序&#xff0c;标记最大深度 class Solution(object):def depthHelper(self, root, depth):if root:depth 1left_de…

HWOD:合并整型数组

一、知识点 合并整型数组目前有两种方法 合并数组并不一定需要真正的合并 1、下意识的方法 对两个整型数组分别排序&#xff0c;然后合并 2、不排序的方法 遍历两个数组&#xff0c;找出最小值&#xff0c;输出最小值。将两个数组中与最小值相等的位置置为超大值 重复以…

VBA_MF系列技术资料1-510

MF系列VBA技术资料1-510 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-0…

go限流、计数器固定窗口算法/计数器滑动窗口算法

go限流、计数器固定窗口算法/计数器滑动窗口算法 一、问题 问题1&#xff1a;后端接口只能支撑每10秒1w个请求&#xff0c;要怎么来保护它呢&#xff1f; 问题2&#xff1a;发短信的接口&#xff0c;不超过100次/时&#xff0c;1000次/24小时&#xff0c;要怎么实现&#xff…

豆瓣影评信息爬取 (爬虫)

代码块&#xff1a; from lxml import etree import requestsheaders{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0 }url_list[] for i in range(0,5):i*20urlsf"https:…

链表带环问题——leetcode环形链表1 2

证明链表带环 链表的带环问题指的是本该指向NULL的最后一个节点指向了之前的节点&#xff0c;导致链表成环&#xff0c;找不到尾结点的情况&#xff0c;那么我们该如何证明链表带环呢&#xff1f; 我们可以类比物理中的追及问题&#xff0c;让快慢指针同时走&#xff0c;两者相…