Java经典笔试题—day07

简介: Java经典笔试题—day07

🔎选择题

(1)Java属于( )

A.操作系统

B.办公软件

C.数据库系统

D.计算机语言

D

(2)类声明中,声明抽象类的关键字是 ( )

A.public

B.abstract

C.final

D.class

B

A. 访问权限修饰符

C. final 表示常量, final 修饰类表示该类不能被继承, final 修饰方法表示该方法不能被重写

D. 声明类的关键字

(3)在使用 interface 声明一个接口时,只可以使用()修饰符修饰该接口

A.private

B.protected

C.默认

D.public

D

修饰接口的修饰符为 public

(4)Math.round(11.5) 等于()

A.11

B.11.5

C.12

D.12.5

C

可以将 Math.round() 方法理解为 4 舍 5 入

(5)以下对继承的描述错误的是()

A.Java中的继承允许一个子类继承多个父类

B.父类更具有通用性,子类更具体

C.Java中的继承存在着传递性

D.当实例化子类时会递归调用父类中的构造方法

A

允许多个子类(>= 1) 继承一个父类, 不允许一个子类继承多个父类

允许一个类实现多个接口

(6)在 java 中 , 一个类()

A.可以继承多个类

B.可以实现多个接口

C.在一个程序中只能有一个子类

D.只能实现一个接口

B

A. 一个子类只能继承一个父类

C. 一个程序可以有多个子类

D.一个类可以实现多个接口

(7)关于以下程序代码的说明正确的 ( )

class HasStatic{
    private static int x = 100;
    public static void main(String args[ ]){
        HasStatic hs1 = new HasStatic();
        hs1.x++;
        HasStatic hs2 = new HasStatic();
        hs2.x++;
        hs1=new HasStatic();
        hs1.x++;
        HasStatic.x--;
        System.out.println( "x=" +x);
    }
}

A.5行不能通过编译,因为引用了私有静态变量

B.10行不能通过编译,因为x是私有静态变量

C.程序通过编译,输出结果为:x=103

D.程序通过编译,输出结果为:x=102

D

被 static 修饰的成员变量, 表示该类只有这一份, 所以每次 new HasStatic() 产生新的对象时, 并不会影响 x 变量

未被 static 修饰的成员变量, 表示该类可以有多份, 随着每次 new HasStatic() 产生新的对象其值也跟着发生变化

(8)以下 _____ 不是 Object 类的方法

A.clone()

B.finalize()

C.toString()

D.hasNext()

D

(9)下面哪一项不是 java 类访问权限控制关键字

A.public

B.this

C.private

D.protected

B

访问权限修饰符 public, protected, default, private

访问权限 public > protected > default > private

(10)Java 语言使用的字符码集是 ( )

A.ASCII

B.BCD

C.DCB

D.Unicode

D

🔎编程题

🥝Fibonacci数列

题目描述

Fibonacci 数列是这样定义的:

F[0] = 0

F[1] = 1

for each i ≥ 2: F[i] = F[i-1] + F[i-2]

因此,Fibonacci 数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在 Fibonacci 数列中的数我们称为 Fibonacci数。给你一个N,你想让其变为一个 Fibonacci 数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为 Fibonacci 数。

输入描述

输入为一个正整数N(1 ≤ N ≤ 1,000,000)

输出描述

输出一个最小的步数变为Fibonacci数

解题思路

以输入的数字15为例

Fibonacci 数列为 0 1 1 2 3 5 8 13 21

其变成一个 Fibonacci 数的最小步数是2

因为15的左侧是13, 15的右侧是21

15 - 13 = 2, 21 - 15 = 6

于是问题就变为找到输入数字两侧的 Fibonacci 数字

然后返回 Math.min(n - pre, cur - n)

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            int n = sc.nextInt();
            int time = getNum(n);
            System.out.println(time);
        }
    }
    private static int getNum(int n) {
        if(n < 2) return 0;
        // pre 前一个元素, cur 当前元素, next 下一个元素
        int pre = 0, cur = 1, next = 0;
        while(cur < n) {
            next = pre + cur;
            pre = cur;
            cur = next;
        }
        return Math.min(n - pre , cur - n);
    }
}

📢题目链接

链接: link


🥝合法括号序列判断

题目描述

给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)

解题思路

解法1

  • 题目要求合法的括号串只能由括号组成, 因此先对长度进行判断, 如果长度为奇数, return false;
  • 遍历字符串, 如果遇到的不是 ‘(’ 或者 ‘)’ , return false;
  • 将字符串中的字符存储到栈中, 遇到 ‘)’ 判断当前的栈顶元素是否为 ‘(’ , 如果是就弹出
  • 最后判断栈中的元素是否为空
  • 为空, 代表合法
  • 不为空, 代表不合法
public static boolean chkParenthesis(String A, int n) {
        // write code here
        //奇数直接false
        if((n & 1) == 1) return false;
        char[] chs = A.toCharArray();
        Deque<Character> stack = new ArrayDeque<>();
        for (int i = 0; i < n; i++) {
            char c = chs[i];
            //只能由括号组成
            if(c != '(' && c != ')') return false;
            if(!stack.isEmpty() && c == ')' && stack.peekLast() == '(') {
                stack.pollLast();
                continue;
            }
            stack.push(c);
        }
        return stack.isEmpty();
 }

解法2

  • 题目要求合法的括号串只能由括号组成, 因此先对长度进行判断, 如果长度为奇数, return false;
  • 遍历字符串, 如果遇到的不是 ‘(’ 或者 ‘)’ , return false;
  • 定义一个变量 int cnt
  • 当遇到 ‘(’ 时, cnt++
  • 当遇到 ‘)’ 时, cnt–
  • 如果 cnt < 0 , return false;
  • 因为面对任何一个合法的括号序列, 一定是先出现 ‘(’ 再出现 ‘)’ , 也就说明了 cnt 的个数始终 >= 0
public static boolean chkParenthesis(String A, int n) {
        if((n & 1) == 1) return false;
        int cnt = 0;
        for (char c : A.toCharArray()) {
            if(c != '(' && c != ')') return false;
            if(c == '(') cnt++;
            if(c == ')') cnt--;
            if(cnt < 0) return false;
        }
        return true;
}

📢题目链接

链接: link


🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍

大家有什么不太理解的,可以私信或者评论区留言,一起加油

相关文章
|
存储 安全 Java
冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)
冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)
527 0
|
5月前
|
搜索推荐 算法 Java
2025 年互联网大厂校园招聘 JAVA 工程师笔试题及备考要点解析
本文针对互联网大厂校招Java工程师笔试题进行解析,涵盖基础知识、面向对象编程、数据结构与算法、异常处理及集合框架等核心内容。从数据类型、运算符到流程控制语句,从类与对象、继承多态到数组链表、排序算法,再到异常捕获与集合框架应用,结合实际案例深入剖析,助你系统掌握考点,提升应试能力。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
234 9
|
5月前
|
Java 数据库连接 API
互联网大厂校招 JAVA 工程师笔试题解析及常见考点分析
本文深入解析互联网大厂校招Java工程师笔试题,涵盖基础知识(数据类型、流程控制)、面向对象编程(类与对象、继承与多态)、数据结构与算法(数组、链表、排序算法)、异常处理、集合框架、Java 8+新特性(Lambda表达式、Stream API)、多线程与并发、IO与NIO、数据库操作(JDBC、ORM框架MyBatis)及Spring框架基础(IoC、DI、AOP)。通过技术方案讲解与实例演示,助你掌握核心考点,提升解题能力。
228 2
|
5月前
|
设计模式 算法 Java
2025 春季校招 Java 研发笔试题详细解析及高效学习指南
本指南专为2025春季校招Java研发岗位笔试设计,涵盖Java 17+新特性(如模式匹配、文本块、记录类和密封类)、现代技术栈(Spring Boot 3、响应式编程、Stream API增强)以及算法与数据结构实战。同时深入解析Spring Data JPA、事务管理、性能优化等内容,并结合实际案例讲解常见算法题解与设计模式应用。资源包含核心知识点、面试题及笔试技巧,助力高效备考。下载地址:[链接](https://pan.quark.cn/s/14fcf913bae6)。
140 1
|
5月前
|
存储 算法 NoSQL
2025 春季校招 java 研发岗位笔试题及相关内容
这份指南针对2025春季校招Java研发岗位,系统梳理了笔试核心知识点。内容涵盖Java基础(关键字、数据类型、循环与条件判断)、集合框架(List、Set、Map)、多线程(创建、同步、休眠与等待)以及异常处理(类型与机制)。通过典型例题解析与实践指导,帮助求职者掌握解题思路,提升编程能力,为成功通过校招笔试奠定基础。资源链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
175 0
|
存储 Java 编译器
刷完一千道java笔试题的常见题目分析
这篇文章是关于刷完一千道Java笔试题后的常见题目分析,涵盖了Java基础知识点,如标识符命名规则、抽象类与接口的区别、String类的equals方法、try-catch-finally块的执行逻辑、类与实例方法的区别、this与super关键字的用法、面向对象的基本概念、重写与重载的原则等,并建议结合JVM内存结构图加深理解。
刷完一千道java笔试题的常见题目分析
|
SQL 存储 数据管理
Java经典笔试题—day13
Java经典笔试题—day13
242 0
|
SQL Java 数据库连接
Java笔试题
Java笔试题
140 0
|
机器学习/深度学习 SQL 关系型数据库
Java经典笔试题—day14
Java经典笔试题—day14
229 0
Java经典笔试题—day12
Java经典笔试题—day12
123 0