Java实习打卡8道面试题

yizhihongxing

下面是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日

相关文章

  • Spring Boot缓存实战之Redis 设置有效时间和自动刷新缓存功能(时间支持在配置文件中配置)

    Spring Boot缓存实战之Redis 设置有效时间和自动刷新缓存功能 背景 在开发web应用时,我们往往需要使用缓存来提高应用的性能和响应速度。Spring Boot提供了对缓存的支持,可以与多种缓存器集成。其中,Redis是非常流行的缓存器。 在使用Redis缓存时,我们经常会遇到以下问题: 设置缓存的有效时间; 自动刷新缓存。 下面将详细介绍如何在…

    Java 2023年6月3日
    00
  • Code Review理论与实战详解

    下面详细讲解一下“Code Review理论与实战详解”的完整攻略。 1. Code Review的定义 Code Review是指对软件开发过程中的代码和文档进行审核的过程,旨在发现代码缺陷和潜在的问题,并提出改进意见。 2. Code Review的目的 Code Review的目的是提高代码质量和生产效率,减少维护和调试时间,并增加团队协作的效率。在C…

    Java 2023年5月26日
    00
  • java结合HADOOP集群文件上传下载

    Java结合Hadoop集群文件上传下载的攻略如下: 1. 确认Hadoop集群状态 在开始上传或下载文件之前,为了确保集群状态正常,需要使用以下命令检查Hadoop集群是否处于正常状态: hadoop fs -ls / 如果出现Hadoop根目录的内容列表,则表示集群状态正常。 2. 文件上传 方式一:利用Hadoop API上传文件 Java代码示例如下…

    Java 2023年5月31日
    00
  • Apache结合Tomcat实现动静分离的方法

    Apache与Tomcat的动静分离 动静分离是指将动态请求和静态请求分别交给不同的服务器来处理,可以提高服务器的效率和性能。在Java Web开发中,常见的动态请求处理方式是通过Tomcat来处理,而静态请求则可以通过Apache服务器来处理。本文将详细讲解如何结合Apache和Tomcat来实现动静分离。 1. 安装Apache和Tomcat 首先需要安…

    Java 2023年5月20日
    00
  • SpringBoot security安全认证登录的实现方法

    下面我将为你详细介绍 SpringBoot security 安全认证登录的实现方法,包括登陆拦截、用户角色授权、自定义登录页面、注销等功能的实现方法。 1. 导入 SpringBoot Security 依赖 在 pom.xml 文件中加入以下依赖: <dependency> <groupId>org.springframework…

    Java 2023年5月20日
    00
  • apache .htaccess文件详解和配置技巧总结

    下面就来详细讲解一下“apache .htaccess文件详解和配置技巧总结”的完整攻略。 一、什么是 .htaccess 文件? 在 Apache 服务器上,.htaccess 文件是一个可以被用来改变服务器配置的配置文件。它可以被放在网站的根目录或者任何需要特殊配置的目录中,而不需要修改服务器的主配置文件(httpd.conf)。 二、.htaccess…

    Java 2023年6月15日
    00
  • SpringBoot整合mybatis-generator-maven-plugin的方法

    SpringBoot整合mybatis-generator-maven-plugin 简介 mybatis-generator-maven-plugin 是一个 Maven 插件,可以帮我们自动生成 Java 代码,并且可以一键完成 DAO 层和 Mapper 映射文件的生成,是一个开发效率较高的工具。 SpringBoot 整合 mybatis-gener…

    Java 2023年5月19日
    00
  • java压缩多个文件并且返回流示例

    下面为你详细讲解如何使用Java压缩多个文件并返回流,包含两条示例。 一、使用Java压缩多个文件 首先,我们需要使用Java提供的ZipOutputStream类来压缩多个文件。以下是一个示例代码: public static void compressFiles(List<File> files, OutputStream outputStr…

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