Java面试题五

本文提供了Java面试中常见的选择题、简答题和逻辑题,涵盖了栈的特点、Servlet生命周期、Filter功能、冒泡排序以及一道数字序列逻辑题,帮助考生深入理解Java核心技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(此系列试题来源于Java面试宝典书籍)

一、选择题

1. 下面关于栈的描述错误的是

  • A. 栈是先进后出的线性表
  • B. 栈只能顺序存储
  • C. 栈具有记忆功能
  • D. 对栈的插入和删除操作中,不需要改变栈底指针

解析

  • 栈是限定在一端进行插入与删除的线性表,栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素
  • 栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照“先进后出”或“后进先出”的原则组织数据的,这便是栈的记忆作用
  • 对栈进行插入和删除操作时,栈顶位置是动态变化的,栈底指针不变

2. 下面说法正确的是

public class Person{
    int arr[] = new int[10];
    public static void main(String args[ ]){
        System.out.println(arr[1]);
    } 
}

// arr[1] :报错,无法引用非静态的变量
// 如果是  static int arr[] = new int[10]  输出结果为0

3. 输出结果

public static void operator(StringBuffer x,StringBuffer y){
    x.append(y);
    y = x;
}

public static void main(String[] args) {

    StringBuffer a = new StringBuffer("A");
    StringBuffer b = new StringBuffer("B");
    operator(a,b);
    System.out.println("a:"+a+",b:"+b);
}

// 输出结果:AB,B
// 原因:方法内变量不能代到方法外   拼接可以    赋值操作不行

4. 

int x = 0;
int y = 10;
do {
    y--;   // 9  y-1得到y值
    ++x;   // 0  先看x值,进行++
}while (x<6);  // 1

// 最后输出结果为6,4

5. 设有一个二维数组 A[m][n],假设 A[0][0]存放的位置在 64410),A[2][2]存放的文职在 67610)每个元素占一个空间,问 A[3][3]10)存放在什么位置? 脚注(10)表示用 10 进制表示

6. 代码执行结果

result:pongping    // 使用start.() 参与线程的竞争,如果是run方法就相等于普通方法 ,所以答案:pongping

 二、简答题

1. Servlet,Servlet生命周期

Servlet 是一种服务器端的 Java 应用程序,具有独立于平台和协议的特性,可以生成动态的 Web 页面。 它担当客 户请求(Web 浏览器或其他 HTTP 客户程序)与服务器响应(HTTP 服务器上的数据库或应用程序)的中间层。Servlet 是位于 Web 服务器内部的服务器端的 Java 应用程序,与传统的从命令行启动的 Java 应用程序不同,Servlet 由 Web 服务器进行加载,该 Web 服务器必须包含支持 Servlet 的 Java 虚拟机

周期

  • 加载实例化
  • 初始化
  • 服务
  • 销毁

2. Filter

对于一个 web 应用程序来说,过滤器是处于 web 容器内的一个组件,它会过滤特定请求资源请求信息和响应信息。一个请求来到时,web 容器会判断是否有过滤器与该信息资源相关联,如果有则交给过滤器处理,然后再交给目标资源,响应的时候则以相反的顺序交给过滤器处理,最后再返回给用户浏览器。

常见的过滤器用途主要包括:对用户请求进行统一认证、对用户的访问请求进行记录和审核、对用户发送的数据 进行过滤或替换、转换图象格式、对响应内容进行压缩以减少传输量、对请求或响应进行加解密处理、触发资源访问事件等。

3. 冒泡排序

public static void Bubble(int[] arr){

    for (int i=0;i<arr.length-1;i++){
        for (int j =0; j<arr.length-1-i;j++){
            if (arr[j]>arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

4. 懒加载方式

https://cantellow.iteye.com/blog/838473   作者:

public class Singleton {

    private static Singleton instance;

    public Singleton() {
    }

    public static Singleton getInstance() {
        if (instance == null){
            return new Singleton();
        }
        return instance;
    }
}

三、逻辑题

1. 4 2 12 28 80

随后的数为(28 + 80 ) * 2 = 216  

2. 2006 年某人连续打工 24 天(该工作的时候工作),共赚了 190 元(日工资 10 元,星期六工资 5 元,星期日 休息无工资)。已知他打工是从 1 月下旬的某一天开始的,这个月的 1 日恰好是星期日, 这人打工结束的那一天是 2 月  

解析:

每一周工资为5×10+5=55元,一共有24÷7=3周……3天,而3周的工资为3×55=165元,所以剩下的3天中赚了190-165=25元,则他应该从周四开始打工。1月1日是星期日,则1月29日也是星期日,由于他从1月下旬某一天开始的,所以这一天应该为1月26日,即在2月18日结束打工。

3. 编号为 1 10 10 个果盘中,每盘都盛有水果,共盛放 100 个。其中第一盘里有 16 个,并且编号相邻的三个果盘中水果是的和都相等,求第 8 盘中水果最多可能有几个

编号相邻的三个果盘中水果数的和都相等,说明了什么,说明①②③=②③④,看出门道来没,也就是①④是相等也,再推,①④⑦⑩相等,②⑤⑧相等,③⑥⑨相等,第一个16个,那么①④⑦⑩有64个,剩下总共36个,②⑤⑧相等,你怎么也要给③⑥⑨各一个吧,那么第八个盘子最多有多少个,是不是就很容易算出来了-->11个

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值