首页 > 编程语言 >《Java 大厂面试基础真题及解析 —— 来自一位程序员的心得分享》

《Java 大厂面试基础真题及解析 —— 来自一位程序员的心得分享》

时间:2024-10-29 19:45:50浏览次数:7  
标签:Java apple 真题 System 程序员 println new public out

作为一名 Java 程序员,在经历了众多面试后,深知 Java 基础在大厂面试中的重要性。以下是我总结的一些常被问到的 Java 基础面试题及解析,希望对大家有所帮助。

2024Java offer收割指南分享

一、面向对象的三大特性
(一)封装
概念
封装是将数据和操作数据的方法绑定在一起,形成一个类。通过访问修饰符(如 public、private、protected 等)来控制类成员的访问权限,对外隐藏内部的实现细节,只暴露必要的接口给外部使用。
示例:

public class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

比如我们有一个 Person 类,包含姓名、年龄等属性。我们可以将这些属性设为私有,并提供公共的方法来获取和设置这些属性的值。

(二)继承
概念
继承允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以扩展父类的功能,同时还可以重写父类的方法来实现自己特定的行为。
示例

class Animal {
    public void eat() {
        System.out.println("Animal is eating.");
    }
}

class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking.");
    }
}

我们有一个 Animal 类作为父类,有 eat 方法。然后创建一个 Dog 类继承自 Animal 类,并添加自己的 bark 方法。

(三)多态
概念
多态是指同一个行为具有多种不同的表现形式。在 Java 中,多态主要通过方法重写和方法重载来实现。方法重写是子类对父类中已有的方法进行重新定义,方法重载是在同一个类中定义多个同名但参数不同的方法。
示例
以下是方法重写的例子:

class Animal {
    public void makeSound() {
        System.out.println("Some sound.");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Meow");
    }
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Woof");
    }
}

然后我们可以这样使用:

Animal animal1 = new Cat();
Animal animal2 = new Dog();
animal1.makeSound(); // 输出 Meow
animal2.makeSound(); // 输出 Woof

二、异常处理
(一)try-catch-finally 块
概念
try 块中放置可能会抛出异常的代码。当 try 块中的代码抛出异常时,程序流程会立即跳转到相应的 catch 块中进行处理。finally 块中的代码无论是否发生异常都会被执行,常用于释放资源等操作。
示例

try {
    FileReader fileReader = new FileReader("nonexistent.txt");
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    String line;
    while ((line = bufferedReader.readLine())!= null) {
        System.out.println(line);
    }
    bufferedReader.close();
} catch (FileNotFoundException e) {
    System.out.println("File not found: " + e.getMessage());
} catch (IOException e) {
    System.out.println("IO error: " + e.getMessage());
} finally {
    // 这里可以关闭资源等操作,即使前面发生了异常,也会执行到这里
    if (bufferedReader!= null) {
        try {
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

比如我们读取一个文件,可能会遇到文件不存在的情况。

(二)常见异常类型
RuntimeException
这是一种运行时异常,比如 NullPointerException(空指针异常)、ArrayIndexOutOfBoundsException(数组下标越界异常)等。这些异常在代码编写时可能不容易被发现,通常在程序运行时才会暴露出来。
示例:

String str = null;
System.out.println(str.length()); // 会抛出 NullPointerException

Checked Exception
这类异常需要在代码中进行显式的处理,比如 IOException(输入输出异常)、SQLException(数据库操作异常)等。如果不处理,编译器会报错。
示例:

try {
    FileOutputStream fos = new FileOutputStream("test.txt");
    fos.write("Hello".getBytes());
    fos.close();
} catch (IOException e) {
    e.printStackTrace();
}

三、集合框架
(一)List 接口
概念
List 是一个有序的集合,它允许元素重复。常用的实现类有 ArrayList 和 LinkedList。ArrayList 基于数组实现,随机访问效率高;LinkedList 基于链表实现,插入和删除操作效率高。
示例
使用 ArrayList 添加元素:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("apple"); // 允许重复元素
System.out.println(list); // 输出 [apple, banana, apple]

使用 LinkedList 进行插入和删除操作:

List<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
linkedList.add(1, 5); // 在索引1处插入元素5
linkedList.remove(2); // 删除索引为2的元素
System.out.println(linkedList); // 输出 [1, 5, 2]

(二)Set 接口
概念
Set 是一个不包含重复元素的集合。常用的实现类有 HashSet 和 TreeSet。HashSet 基于哈希表实现,不保证元素的顺序;TreeSet 基于红黑树实现,元素会按照自然顺序或指定的比较器顺序进行排序。
示例
使用 HashSet 添加元素:

Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("apple"); // 重复的元素不会被添加
System.out.println(set); // 输出 [apple, banana]

使用 TreeSet 并按照字符串长度进行排序(需要实现 Comparator 接口):

Set<String> treeSet = new TreeSet<>(new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.length() - s2.length();
    }
});
treeSet.add("apple");
treeSet.add("banana");
treeSet.add("pear");
System.out.println(treeSet); // 输出 [pear, apple, banana](按照字符串长度排序)

(三)Map 接口
概念
Map 是一个用于存储键值对的集合。键必须是唯一的,而值可以重复。常用的实现类有 HashMap 和 TreeMap。HashMap 基于哈希表实现,不保证键值对的顺序;TreeMap 基于红黑树实现,键会按照自然顺序或指定的比较器顺序进行排序。
示例
使用 HashMap 存储和获取键值对:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
System.out.println(map.get("apple")); // 输出 1

使用 TreeMap 并按照键的字符串长度进行排序(需要实现 Comparator 接口):

Map<String, Integer> treeMap = new TreeMap<>(new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.length() - s2.length();
    }
});
treeMap.put("apple", 1);
treeMap.put("banana", 2);
treeMap.put("pear", 3);
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}
// 输出 pear: 3
//       apple: 1
//       banana: 2(按照键的字符串长度排序)

以上就是一些 Java 大厂面试中常见的 Java 基础面试题及相关代码示例和解析。希望大家在准备面试时,不仅要熟悉这些知识点的概念,还要能够熟练运用代码进行实现和演示。祝大家面试顺利!
以上内容仅供参考,你可以根据实际情况进行调整和补充。如果你还有其他问题或需要进一步的帮助,欢迎随时问我。

标签:Java,apple,真题,System,程序员,println,new,public,out
From: https://blog.csdn.net/weixin_44853705/article/details/143245990

相关文章

  • JavaScript基本内容续集之函数和对象
    书接上篇,我们讲到了JavaScript的基本内容,这篇讲到JavaScript的函数和对象。目录一、函数(一)概述(二)函数的定义(三)函数的使用1、在程序中调用(分为有返回值和无返回值调用)①无返回值的调用②有返回值的调用2、常见事件①在超链接被点击时调用(监听点击事件)②在按钮被点击......
  • Java项目-基于springboot框架的高校社团管理系统项目实战(附源码+文档)
    作者:计算机学长阿伟开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。开发运行环境开发语言:Java数据库:MySQL技术:SpringBoot、Vue、MybaitsPlus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven源码下载地址:https://download.csdn.net/download/weixin_53......
  • Java项目-基于springboot框架的民宿管理系统项目实战(附源码+文档)
    作者:计算机学长阿伟开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。开发运行环境开发语言:Java数据库:MySQL技术:SpringBoot、Vue、MybaitsPlus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven源码下载地址:https://download.csdn.net/download/weixin_53......
  • Java面试题之HashMap
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Hashtable与HashMap的区别?HashMap中的key我们可以使用任何类作为key吗?HashMap的长度为什么是2的N次方呢?HashMap与ConcurrentHashMap的异同?红黑树有哪几个特征?似乎有点模糊了,那就大概看一下面试......
  • Java常见面试真题之中级进阶(HashMap篇)
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Hashtable与HashMap的区别?HashMap中的key我们可以使用任何类作为key吗?HashMap的长度为什么是2的N次方呢?HashMap与ConcurrentHashMap的异同?红黑树有哪几个特征?似乎有点模糊了,那就大概看一下面试题吧。......
  • 实验四 JavaBean及Servlet使用
    1.完整代码下载:实验三代码2.完整代码下载:实验四代码2.导入代码到eclipse运行【如何处理导入后的报错】......
  • Java两个集合取差集4种方式举例
    Java两个集合取差集4种方式举例 更新时间:2024年08月03日10:30:45 作者:只吹45°风  在Java 编程中,经常需要对集合进行一些操作,比如取两个集合的交集、并集和差集,下面这篇文章主要给大家介绍了关于Java两个集合取差集的4种方式,需要的朋友可以参考下 +目录......
  • javaCV图片OCR文字识别
    springboot项目pom文件中添加以下依赖 1<dependency>2<groupId>org.bytedeco</groupId>3<artifactId>javacv-platform</artifactId>4<version>1.5.5</version>5</depend......
  • 现在职业PHP 程序员通常用什么编程工具
    标题:现代职业PHP程序员通常使用的编程工具开头段落:现代职业PHP程序员通常使用的编程工具主要包括集成开发环境(IDE)、版本控制系统、调试工具、数据库管理工具、以及代码质量工具。这些工具共同构建了PHP开发的基础框架,使开发工作更加高效、组织化。特别地,集成开发环境(IDE)无疑是......
  • java计算机毕业设计作业管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,教育领域也在不断探索和应用新技术,以提高教学质量和管理效率。传统的作业管理方式通常依赖于纸质媒介和面对面的交流,这种方式......