Java实习打卡8道面试题

下面是Java实习打卡8道面试题的完整攻略。

1. 如何取数组中的随机数?

可以使用Java内置的Math.random()方法来取得一个0到1之间的随机数,然后根据数组长度与所需随机数的范围进行计算即可。

int[] nums = {1, 2, 3, 4, 5};
int range = 3; // 从数组中取3个随机数
int[] randomNums = new int[range];

for (int i = 0; i < range; i++) {
    int randomIndex = (int) (Math.random() * (nums.length - i));
    randomNums[i] = nums[randomIndex];
    nums[randomIndex] = nums[nums.length - 1 - i];
}

以上代码中,通过循环生成3个随机数,并将它们保存到randomNums数组中。每次循环,取一个0nums.length-i之间的随机数作为数组下标获取相应元素,并将这个元素从原数组中移除,直到取完3个随机数。

2. 如何判断单链表是否是回文?

单链表是一种链式存储结构,由一系列节点组成,每个节点包含一个数据元素与一个指向下一节点的指针。回文是指正着读与倒着读都一样,因此,判断单链表是否是回文,可以采用以下步骤:

  1. 用快慢指针找到单链表的中间节点。
  2. 反转链表后半部分。
  3. 比较前半部分与后半部分是否相同。
public boolean isPalindrome(ListNode head) {
    if (head == null || head.next == null) {
        return true;
    }

    ListNode slow = head, fast = head;
    while (fast.next != null && fast.next.next != null) {
        slow = slow.next;
        fast = fast.next.next;
    }

    ListNode cur = slow.next, pre = null, next;
    while (cur != null) {
        next = cur.next;
        cur.next = pre;
        pre = cur;
        cur = next;
    }

    while (pre != null) {
        if (head.val != pre.val) {
            return false;
        }
        head = head.next;
        pre = pre.next;
    }

    return true;
}

以上代码中,首先用快慢指针找到链表中间节点。然后反转链表后半部分。最后比较前半部分与反转后的后半部分是否相同。如果都相同,则链表是回文,返回true,否则返回false

示例:

对于链表 1->2->2->1,最终反转后的链表为1<-2<-2,比较之后发现前半部分和后半部分完全相同,因此符合回文的特性,返回true

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实习打卡8道面试题 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • JDBC数据库连接步骤解析

    JDBC是Java Database Connectivity的缩写,用于Java语言访问关系型数据库的API。下面就来详细讲解JDBC数据库连接步骤解析。 JDBC数据库连接步骤 加载数据库驱动:通过Class.forName()方法加载数据库驱动,例如加载mysql数据库驱动可以使用以下代码: Class.forName(“com.mysql.jdbc.…

    Java 2023年5月20日
    00
  • Java最常用的6个简单的计算题

    Java最常用的6个简单的计算题 作为Java语言的入门者和初学者,掌握一些最基本的计算题是非常重要的。以下是Java中最常用的6个简单的计算题及其解答攻略。 1. 加法 加法是一种最基本的数学运算,其符号为+。在Java中,可以使用+运算符进行两个数的加法运算。例如: int a = 2; int b = 3; int c = a + b; System.…

    Java 2023年5月26日
    00
  • java获得平台相关的行分隔符和java路径分隔符的方法

    获取平台相关的行分隔符方法: 在Java程序中,我们需要将字符串或数据写入到文件或网络中,而不同的操作系统使用不同的转义符进行换行操作。因此,我们需要获得与操作系统相关的行分隔符,以便在正确的位置进行换行操作。 Java中可以通过System.getProperty()方法获取平台相关的行分隔符。该方法返回操作系统的行分隔符,可以在不同的平台上使用相同的代码…

    Java 2023年5月26日
    00
  • Javascript字符串常用方法详解

    这里是“Javascript字符串常用方法详解”的完整攻略。 1. 概述 在JavaScript中,字符串是一种基本的数据类型。字符串常常用于文本处理、表单验证、数据格式化等场景。JavaScript提供了许多字符串操作方法,可以让我们快速、灵活地处理字符串。 2. 常用方法 2.1 字符串的length属性 字符串的length属性可以获取字符串的长度,即…

    Java 2023年5月27日
    00
  • jsp中自定义Taglib详解

    这里是“jsp中自定义Taglib详解”的完整攻略,包含如下内容: 1. 什么是自定义标签? 自定义标签(Custom Tag)是 JSP 技术中的一种高级特性,使用者可以自己编写标签库文件,将一些公共的动态交互界面组件或功能封装为自定义标签,方便重复使用,大大提高了程序的复用性和可维护性。 2. 自定义标签的本质 自定义标签的本质是由一个特殊的类来实现,这…

    Java 2023年6月15日
    00
  • 如何保持Java编程风格一致?

    以下是详细讲解“如何保持Java编程风格一致?”的完整使用攻略。 1. 了解Java编程规范 在保持Java编程风格一致的过程中,了解Java编程规范是非常必要的。Java编程规范是指一系列的编程规则和规范,主要包括: 包名:包名应该是小写的,多个单词之间使用下划线分隔。 类名:类名应该是首字母大写的驼峰命名法。 方法名:方法名应该是首字母小写的驼峰命名法。…

    Java 2023年5月11日
    00
  • Java Calendar日历类原理及使用方法

    Java Calendar日历类原理及使用方法 一、Calendar类概述 Java中Calendar类是一个抽象类,提供了实现万年历、农历等复杂功能的方法,是日期时间处理的重要类。Calendar类是Java中的日历系统,可以根据用户区域/语言环境使用各种日历系统,比如中国农历或世界其他国家的日历系统,也可以将实际日期与用户预期日期的偏差(时间偏移)合理地…

    Java 2023年5月20日
    00
  • Spring Security学习之rememberMe自动登录的实现

    下面我会给出详细的攻略,分为以下步骤: 添加pom依赖 配置Remember-me 编写HTML页面 编写Controller 运行测试 下面我会对每个步骤进行详细的讲解: 1. 添加pom依赖 在pom.xml中添加Spring Security和Spring Web的依赖。示例pom.xml文件如下: <dependencies> <d…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部