Java面试题(每日一练)

面试题——找出1000个连续数中出现的一个重复数 前些天去面试一家做ipad开发的公司,第一道题是找出1000个数(1-999)中一个重复的数。这1000个数是连续且乱序的 阅读详情

1000个数,数值的范围是[0,999]有且只有两个相同的数请编写java程序找出来

import java.util.HashMap;
import java.util.Map;

public class FindDuplicates {
    public static void main(String[] args) {
        int[] numbers = {/* 在这里填入你的1000个数 */};
        findDuplicates(numbers);
    }

    public static void findDuplicates(int[] numbers) {
        Map<Integer, Integer> countMap = new HashMap<>();
        for (int num : numbers) {
            countMap.put(num, countMap.getOrDefault(num, 0) + 1);
            if (countMap.get(num) == 2) {
                System.out.println("The duplicate numbers are: " + num);
                return; // 找到后就返回,因为题目说有且仅有两个相同的数
            }
        }
        System.out.println("No duplicate numbers found or more than two duplicates found.");
    }
}

不使用Java的split将字符串拆分成数组,如ab&&2通过&&拆分成[ab,2]

public class Main {
    public static void main(String[] args) {
        String str = "ab&&2";
        String delimiter = "&&";
        
        int index = str.indexOf(delimiter);
        
        if (index != -1) {
            String[] result = new String[2];
            result[0] = str.substring(0, index);
            result[1] = str.substring(index + delimiter.length());
            
            // 输出结果
            for (String s : result) {
                System.out.println(s);
            }
        } else {
            System.out.println("Delimiter not found in the string.");
        }
    }
}

不使用Java的组合函数将字符串ab,2通过&&组合成ab&&2

public class Main {
    public static void main(String[] args) {
        String firstPart = "ab";
        String secondPart = "2";
        String delimiter = "&&";

        // 创建结果字符串,手动拼接
        StringBuilder result = new StringBuilder();
        result.append(firstPart);
        result.append(delimiter);
        result.append(secondPart);

        // 输出最终结果
        System.out.println(result.toString());
    }
}

有一张数据库表其表结构为:

create table student(
	id int,
	name varchar(32),
	age int,
	score double(4, 1),
	birthday date,
	sex int,
	insert_time timestmp
);

请按照年龄(age)分组 查出不同组的平均分和人数,分数score低于60分的人不参与分组某一年龄分组人数小于 2,该年龄段不参与分组,请按照以上要求写出sql 语句

SELECT age, 
       AVG(score) as average_score, 
       COUNT(*) as number_of_students
FROM (
    SELECT id, age, score
    FROM student
    WHERE score >= 60 -- 排除分数低于60分的人
) AS filtered_students
GROUP BY age
HAVING COUNT(*) >= 2 -- 忽略人数小于2的年龄组
ORDER BY age;

双线程交替打印0-100的三种方法

方法一:传统wait/notifyAll+等待标记mark

static AtomicInteger i = new AtomicInteger(1);
static Object lock = new Object();
static int mark = 1;
Thread a = new Thread(() -> {
    while (i.get() < 100){
        synchronized (lock){
            while (mark != 1){
                try {
                    lock.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("线程a:" + i.getAndIncrement());
            lock.notifyAll();
            mark = 2;
        }
    }
});
Thread b = new Thread(() -> {
    while (i.get() <= 100){
        synchronized (lock){
            while (mark != 2){
                try {
                    lock.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("线程b:"+i.getAndIncrement());
            lock.notifyAll();
            mark = 1;
        }
    }
});
a.start();
b.start();

方法二:信号量Semaphore

static AtomicInteger i = new AtomicInteger(1);
static Semaphore s1 = new Semaphore(1);
static Semaphore s2 = new Semaphore(0);
Thread a = new Thread(() -> {
    try {
        while(i.get() < 100){
            s1.acquire();
            System.out.println("线程-a:" + i.getAndIncrement());
            s2.release();
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
});
 
Thread b = new Thread(() -> {
    try {
        while(i.get() < 100){
            s2.acquire();
            System.out.println("线程-b:" + i.getAndIncrement());
            s1.release();
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
});
a.start();
b.start();

方法三:LockSupport

static AtomicInteger i = new AtomicInteger(1);
Thread [] threads = new Thread[2];
threads[0] = new Thread(() -> {
    while (i.get() < 100){
        System.out.println("线程a:" + i.getAndIncrement());
        LockSupport.unpark(threads[1]);
        LockSupport.park();
    }
});
 
threads[1] = new Thread(() -> {
    while (i.get() < 100){
        LockSupport.park();
        System.out.println("线程b:" + i.getAndIncrement());
        LockSupport.unpark(threads[0]);
    }
});
threads[0].start();
threads[1].start();
Java面试题 每日一练4.12 1./…/中可以嵌套//注释,也能嵌套/…/注释。 正确 错误 解析:在Java中规定,多行注释可以嵌套单行注释,但是不能嵌套多行注释。 不太能理解原因的朋友不妨这样想,如果多行注释/A//B/完全可以将内部的A//B作为普通字符串来理解,没有所谓单行不单行之说,所以可以嵌套单行注释。 但是如果是嵌套多行注释呢可以看看/A/B/C/,到编译器遇到多行注释的时候会以’/A/B/’来作为匹配的字符... 阅读详情

相关推荐

Java面试题每日一练(4.16)

1.采用递归方式对顺序表进行快速排序。下列关于递归次数的叙述中,正确的是()。 递归次数与初始数据的排列次序无关 每次划分后,先处理较长的分区可以减少递归次数 每次划分后,先处理较短的分区可以减少递归次数 递归次数与每次划分后得到的分区的处理顺序无关 解析:快速排序的递归次数与元素的初始排列有关。如果每一次划分后分区比较平衡,则递归次数少;如果划分后分区不平衡,则递归次数多。但快速排序的递归次...

weixin_43840862的博客 4033

有1000个数,范围在0-999中,有且仅有两个相同数,用一次遍历查找出来

这是一个我遇到的一个面试题目,当时时间紧迫,没有回答上来,不免是一个遗憾。后来回去后想着用数学的方法,可是把个数缩减到1-4几个数,在其和上没有找到规律,呈随机状态: 重复数为4: 4 2 3 4:13 1 4 3 4:12 1 2 4 4:11 重复数为3: 3 2 3 4:12 1 3 3 4:11 1 2 3 3:9 …略 由此看来这个数具有双随机性:本身随机(0-99...

mjk1929425的博客 5819

Java面试题 每日一练(4.9)

1.下列Java代码中的变量a、b、c分别在内存的____存储区存放。 class` `A { ``private` `String a = “aa”; ``public` `boolean methodB() { ``String b = “bb”; ``final String c = “cc”; ``} } 堆区、堆区、堆区 堆区、栈区、堆区 堆区、栈区、栈区...

weixin_43840862的博客 979

编程题:1000个数范围是[0, 999],有且只有2个相同的数,请编写程序找出来

1000个数范围是[0, 999],有且只有2个相同的数,请编写程序找出来

LM_xixixi_的博客 1067

1000个数中找出重复数字 - C语言算法实现与解析

本文探讨了在包含1-999整数的1000个元素数组(其中某个数字重复,另一个数字缺失)中寻找重复数字的四种算法:1.哈希表法(最优解):通过记录数字出现次数,时间复杂度O(n),空间复杂度O(n);2.数学求和法:利用数学公式计算重复数字,时间复杂度O(n),空间复杂度O(1);3.排序查找法:先排序后遍历,时间复杂度O(nlogn);4.位运算异或法:利用异或特性找出重复数字。文章对比了各方法的性能,并提供了扩展解决方案和完整测试程序,建议根据实际场景选择合适的算法。

学无止境 5831

scanpy单细胞转录组python教程(四):单样本数据分析之降维聚类及细胞注释

本文介绍了使用scanpy进行单细胞转录组分析的降维聚类和细胞注释流程。首先通过PCA降维并可视化主成分贡献,然后使用不同分辨率参数(0.2-1.0)进行Leiden聚类。通过Wilcoxon检验鉴定marker基因,并基于经典marker基因手动注释细胞类型。最后对低质量细胞群进行过滤,并重新计算邻居图和UMAP可视化。流程中包含PCA方差分析、多分辨率聚类比较、marker基因筛选和基于UMAP的细胞类型可视化等关键步骤,为后续分析奠定基础。

qq_42090739的博客 941

1000个数范围是[0,999],有两个相同的数,请找出这个数

思路: 一千个数中只有两个数相同那么就是当把这个数组排序后,这两个数一定是相邻的,通过java封装好的方法进行数组排序,循环判断该数组的相邻的数输出即可; 代码如下: //一千个数范围0~999,用int数组; Scanner sr=new Scanner(System.in); int[] ace =new int[1000]; for (int i = 0; i <ace.length; i++) { //赋值1到1000 ace[i]=i+1; } //最

心态的博客 5558

ESP8266+ITR8307实战:如何用反射式光电管实现5cm远距离检测(附避坑指南)

本文详细介绍了如何利用ESP8266的ADC功能与ITR8307反射式光电管,通过调制解调、硬件电路优化及软件同步采样策略,实现5cm稳定远距离检测。文章提供了完整的硬件设计、代码实现与调优避坑指南,有效解决了环境光干扰与信号衰减难题,适用于智能车、自动化等需要可靠非接触检测的项目。

rgv234567的博客 262

java每日一练:面试题集合

工作日每天一个小知识点回顾,加深理解,增强表达能力

不放手,不错过的博客 6111

[记录一个bug]av_hwdevice_ctx_create出现Cannot allocate memory(附带库运行时路径)[已解决]

新写的程序里调用ffmpeg的av_hwdevice_ctx_create()这个函数,出现Cannot allocate memory。但是另个程序一样的代码,居然是成功的。 反复检查之后无果,就跳出去查了一下,看到一个问答: Have you tried to use ffmpg executables with the same libs that you using when you run the app? Have you tried to use ffmpg executables

熊猫Ben的博客 3585

Calibre电子书阅读器个性化样式定制指南

本文详细介绍了如何通过Calibre电子书阅读器的用户样式表功能进行深度个性化样式定制。从修改全局字体、行距、背景配色(包括深色/浅色模式)到美化代码块、引用等特殊元素,本指南提供了完整的CSS代码示例与实战技巧,帮助用户打造专属的舒适阅读环境,显著提升电子书阅读体验。

vv45678的博客 920

【蓝桥Java每日一练】———(1),Java大厂技术面试题汇总

由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档还有更多面试复习笔记分享如下网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)一个人可以走的很快,但一群人才能走的更远!

2301_82243364的博客 1017

rockchip rk3566 android11 网口log报错: DMA engine initialization failed

问题描述:上电初始化前将网口插入,然后上电初始化网口能够正常使用,且能够找到PHY,ifconfig 查看能够有eth0 产生,网口正常使用且能够热插拔,但上电初始化时,不插入网口,就会报DMA engine initialization failed 错误,DMA 初始化的时候出错了。 分析:一般产生这个问题可以认为是GMAC 的工作时钟出问题了。先测量时钟引脚是否有时钟,时钟频率以及幅度等指标是否正常,主要确认以下几个方面: 1.IOMUX 出错,检查时钟脚寄存器值是否正确。 2.时钟方向以及配置

qq_48709036的博客 2万+

JAVA面试题每日一练

1.讲述一下GC: 参考答案: JAVA GC(Garbage Collection,垃圾回收)机制是区别C++的一个重要特征,C++需要开发者自己实现垃圾回收的逻辑,而JAVA开发者则只需要专注于业务开发,因为垃圾回收这件繁琐的事情JVM已经为我们代劳。根据JVM规范,JVM把内存划分成了如下几个区域: 方法区(Method Area) 堆区(Heap) 虚拟机栈(VM Stack) 本地方法栈(Native Method Stack) 程序计数器(Program Counter Register),其

weixin_45753248的博客 625

【ArcPy】用Python批量处理大规模地理数据的几何校正

在许多GIS应用中,尤其是在大规模地理数据处理时,几何校正(Geometric Correction)是一个至关重要的任务。它确保了不同来源的地理数据能够正确地对齐和匹配,从而为后续分析提供准确的基础。几何校正的常见应用包括遥感影像的地理配准、矢量数据的投影转换等。几何校正通常包括坐标转换、重采样等步骤。以下示例展示了如何使用arcpy的工具进行几何校正。"""实施几何校正:param input_layer: 输入待校正数据层。

陈书予 992

13、无人机网络安全攻击检测:入侵检测系统综述

本文综述了无人机网络(FANETs)中的网络安全攻击与入侵检测系统(IDS)研究进展。文章介绍了无人机网络的架构设计、路由协议分类及移动模型,重点分析了DoS、DDoS、病毒蠕虫和零日攻击等常见安全威胁,并系统梳理了网络型、主机型、签名型、异常型、混合型等多种IDS的技术原理与应用。通过对比不同攻击类型及其检测机制,提出了综合使用多类IDS、更新签名库、优化路由、加强加密和建立应急响应等安全防护建议。同时展望了人工智能、量子安全和融合安全架构等未来发展趋势,旨在为提升无人机网络的安全性提供全面的技术参考。

wasm7browser的博客 162

面试题[每日一练][java]

面试题[java] [每日一练] 关于字符串的拼接问题 public class Demo{ public static void main(String [] args){ String s1="hello"; String s2="world"; String s3="helloworld"; String s4="hello"+s2; String s5=s1+"world"; final St

m0_57001006的博客 177

uniapp [安卓苹果App端] - 实现支付宝支付功能+拉起支付宝app付款支付后返回跳转到原页面,详解uniApp如何唤起本机支付宝并跳转到支付页面全流程及示例源码(APP端支付宝支付,支持打包

全网最详细的uniapp支付宝支付教程,uniapp支付宝支付流程,uni-app项目在APP端使用支付宝支付功能,uniapp前端实现支付宝支付,uniapp中唤醒支付宝进行支付并返回app,uniApp调起支付宝支付失败报错,uniapp app端调支付宝支付接口,uniapp开发安卓App对接支付宝支付,uniapp苹果ios唤起支付宝支付,uniapp调用支付宝支付uniapp开发app-调用支付宝支付,uniapp开发安卓苹果app如何接入支付宝支付,UniApp中实现支付宝支付功能,支付报错,调

🏆 前端领域优质创作者 1万+

【蓝桥Java每日一练】———,java面试题缓存方面的问题有哪些

我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习已经将知识体系整理好(源码,笔记,PPT,学习视频)网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)一个人可以走的很快,但一群人才能走的更远!

2301_82243364的博客 864

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java面试题每日一练(3)

文章目录1、Java 静态变量和成员变量的区别?2、抽象类(abstract class)和接口(interface)有什么区别?3、Java 中的 final 关键字有哪些用法?4、try、catch、finally 考察,请指出下面程序的运行结果。5、wait() 和 sleep() 方法的区别6、线程的 sleep() 方法和 yield() 方法有什么区别?7、编写多线程程序有几种实现方式?8、synchronized 和 Lock 的区别9、BlockingQueue是什么?10、List、Se.

weixin_51201930的博客 497

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

面试题[java] [每日一练] [包装类]

面试题[java] [每日一练] [包装类] Integer i=new Integer(1); Integer j=new Integer(1); System.out.println(i==j); //这里的输出结果为false Integer m=1; Integer n=1; System.out.println(m==n);//这里的输出结果为true Integer x=128; Integer y=128; System.out.println(x==y); /

m0_57001006的博客 273

java面试题每日一练(2)

文章目录1、Java有哪些数据类型?2、面向对象的三个基本特征?3、访问修饰符public,private,protected,以及不写时的区别?4、什么是内部类?5、&和&&的区别?6、String 类可以继承吗?7、String和StringBuilder、StringBuffer的区别?8、String s = "xyz" 和 String s = new String("xyz") 区别?9、== 和 equals 的区别是什么?10、两个对象的 hashCode() 相同,

weixin_51201930的博客 720

java面试题每日一练(5)

文章目录1、java中为什么会有GC机制呢?2、什么是java中的内存溢出?什么又是Java中的内存泄露?3、谈谈JVM的内存结构和内存分配4、简述下TCP协议和UDP协议间的区别。5、说说synchronized关键字和volatile关键字的区别6、运行时异常和受检异常有何异同?7、什么是多线程并发安全问题?提出解决方案8、提供3种获取Class对象的方法。9、为什么要用线程池?常用的创建线程池的方法有哪些?10、List的常见实现类:ArrayList、LinkedList、Vector、Stack作

weixin_51201930的博客 404

java面试题每日一练(4)

文章目录1、throw和throws有什么区别?2、Colliection和Collections有什么区别?3、Override(重写)和Overload(重载)有什么区别?4、Math.round(5.5)等于多少?Math.round(-5.5)等于多少?5、>>和>>>有什么区别?6、java中比较器Comparator和Comparable有什么区别?7、使用至少三种使得Map集合为线程安全的集合8、HashSet的底层实现原理9、HashSet集合如何检查重复?10

weixin_51201930的博客 904

Java面试题 每日一练(4.7)

1.关于Java的一些概念,下面哪些描述是正确的:( ) 所有的Java异常和错误的基类都是java.lang.Exception, 包括java.lang.RuntimeException 通过try … catch … finally语句,finally中的语句部分无论发生什么异常都会得到执行 java中所有的数据都是对象 Java通过垃圾回收回收不再引用的变量,垃圾回收时对象的finall...

weixin_43840862的博客 3630

Java面试题 每日一练(4.8)

1.对于子类的构造函数说明,下列叙述中错误的是( )。 子类可以继承父类的构造函数。 子类中调用父类构造函数不可以直接书写父类构造函数,而应该用super();。 用new创建子类的对象时,若子类没有带参构造函数,将先执行父类的无参构造函数,然后再执行自己的构造函数。 子类的构造函数中可以调用其他函数。 解析: A.java继承中对构造函数是不继承的,只是显式或者隐式调用,所以A选项不对 ...

weixin_43840862的博客 1663
上一篇: mysql由浅到深
下一篇: Spring面试题大全
oleg829
博客等级 码龄5年 70粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值