java基础和面向对象面试题_01

简介: java基础和面向对象面试题_01=============================================================================逻辑思考题:1:矿泉水1元钱1瓶,每2个空瓶换一瓶矿泉水,现有20元钱,请问可以买多少瓶矿泉水? ...

java基础和面向对象面试题_01

=============================================================================
逻辑思考题:

1:矿泉水1元钱1瓶,每2个空瓶换一瓶矿泉水,现有20元钱,请问可以买多少瓶矿泉水?

    20    (虽然感觉有道理,但是肯定不是这个)
    39    程序员
    40    销售 – 管理岗位

    逻辑思维能力是没有问题的:
    39=20+10+5+2+1+1和1个空瓶子

    如何能达到40呢?
    (请问可以买多少瓶矿泉水?应改为:你可以喝到多少瓶矿区水?40瓶才能成立)
    借一个。
    如何借?考验交流沟通能力。
    1个空瓶子先给商店,再向别人借一个,喝完水,再把瓶子还给别人。
-----------------------------------------------------------------------------
2:下面这个表达式,你移动一个数字或者符号就可以把这个表达式变成正确的。请试试:
    62-63=1
    
    把6移动到2的次方位置。2的6次方是64。
    2的10次幂以内的值要非常的敏感。
-----------------------------------------------------------------------------
3: 一栋房子需要一个工匠七天建成,这个工匠的工钱是一份金条,假如现在你需要盖一栋房子,
而你只有一根完整的金条,怎么能把金条分三份的情况下每天都付给工匠工资,最后一天刚好付完?

    1/7,2/7,4/7
=============================================================================
面试题:

1:谈谈final、finallyfinalize的区别
    final:最终的意思,可以修饰类,方法和变量。
        它修饰的类,不能被继承
        它修饰的方法,不能被重写
        它修饰的变量,不能被改变
    finally:是异常处理的一部分,用于释放资源的。它控制的代码永远会执行。
        特殊情况:在执行到finally之前,JVM退出了。
    finalize:是Object类的一个方法,用于垃圾回收。
-----------------------------------------------------------------------------
2: &和&&的区别
    A:作为逻辑运算符,&&具有短路效果。
    B:&还可以做为位运算符。
-----------------------------------------------------------------------------
3: Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
    Math类的成员方法:
        public static int round(float a)   四舍五入(参数为double的自学)
            要深刻理解四舍五入的具体含义:
                满足五入的条件后,得到的值要比原来的值大;
                满足四舍的条件后,得到的值要比原来的值小;
                不管是正数还是负数。
    12
    -11
-----------------------------------------------------------------------------
4: short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
    前者有错,s1会自动提升为int类型,结果赋值给short类型,所以报错。
    后者无错,+=这种赋值运算符隐含了强制类型转换。其实变量s1的值未被使用。
    
示例代码如下:
public class Test {
    public static void main(String[] args) {
        System.out.println(Math.round(11.5));    // 12
        System.out.println(Math.round(-11.5));    // -11
        
        // short s1 = 1; 
        // s1 = s1 + 1; // Type mismatch: cannot convert from int to short 类型不匹配:不能从int转换为short
        
        short s1 = 1; // The value of the local variable s1 is not used 局部变量s1的值未被使用    出现了警告
        s1 += 1;
    }
}
-----------------------------------------------------------------------------
5:数组有没有length()这个方法? String有没有length()这个方法?
    没有。特别注意:因为数组求长度是:数组名.length,而不是:数组名.length()
    有。
-----------------------------------------------------------------------------
6: Overload和Override的区别。Overload的方法是否可以改变返回值的类型?
    Overload:重载
    Override:重写

    重载:
        同一个类中,方法名相同,参数列表不同。与返回值类型无关。

    重写:
        存在于子父类,或者子父接口中,方法声明相同。

    Overload的方法可以改变返回值的类型,因为它与返回值类型无关。
-----------------------------------------------------------------------------
7:给我写出JDK提供的5个常用类名、5个常用接口名、5个常用包名。
    5个常用类名
        String
        StringBuilder
        Integer
        集合类(ArrayList,LinkedList,HashSet,HashMap)
        IO流(FileReader,FileWriter,FileInputStream,FileOutputStream)
        (BufferedXxx系列)
--------------------------------------
    5个常用接口名
        Collection
        List
        Set
        Map
        Iterator
        Comparable
        Comparator
        跟数据库相关的接口:Connection,Statement,PreparedStatement,CallableStatement,ResultSet
--------------------------------------
    5个常用包名
        java.lang
        java.util
        java.io
        java.net
        java.sql
        java.math
        java.awt
-----------------------------------------------------------------------------
8:构造方法是否可被override?
    不可以。
-----------------------------------------------------------------------------
9: try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
  会
  前
----------------------------------------------------------------------------- 10: 编程题: 用最有效率的方法算出2乘以8等於几? 2<<3  左移 ----------------------------------------------------------------------------- 11: 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性吗? 引用传递对象,可以。 ----------------------------------------------------------------------------- 12: switch是否能作用在byte上,是否能作用在long上,是否能作用在String上? 可以 不可以 JDK7以后可以 可以是byte,short,int,charJDK5以后表达式可以是枚举JDK7以后表达式可以是字符串=============================================================================

 

我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
相关文章
|
2月前
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
65 4
|
4天前
|
缓存 安全 Java
java面试-基础语法与面向对象
本文介绍了 Java 编程中的几个核心概念。首先,详细区分了方法重载与重写的定义、发生阶段及规则;其次,分析了 `==` 与 `equals` 的区别,强调了基本类型和引用类型的比较方式;接着,对比了 `String`、`StringBuilder` 和 `StringBuffer` 的特性,包括线程安全性和性能差异;最后,讲解了 Java 异常机制,包括自定义异常的实现以及常见非检查异常的类型。这些内容对理解 Java 面向对象编程和实际开发问题解决具有重要意义。
38 15
|
2月前
|
Java 程序员
Java社招面试中的高频考点:Callable、Future与FutureTask详解
大家好,我是小米。本文主要讲解Java多线程编程中的三个重要概念:Callable、Future和FutureTask。它们在实际开发中帮助我们更灵活、高效地处理多线程任务,尤其适合社招面试场景。通过 Callable 可以定义有返回值且可能抛出异常的任务;Future 用于获取任务结果并提供取消和检查状态的功能;FutureTask 则结合了两者的优势,既可执行任务又可获取结果。掌握这些知识不仅能提升你的编程能力,还能让你在面试中脱颖而出。文中结合实例详细介绍了这三个概念的使用方法及其区别与联系。希望对大家有所帮助!
208 60
|
1月前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
136 14
|
1月前
|
安全 Java 程序员
Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
61 13
|
2月前
|
算法 安全 Java
Java线程调度揭秘:从算法到策略,让你面试稳赢!
在社招面试中,关于线程调度和同步的相关问题常常让人感到棘手。今天,我们将深入解析Java中的线程调度算法、调度策略,探讨线程调度器、时间分片的工作原理,并带你了解常见的线程同步方法。让我们一起破解这些面试难题,提升你的Java并发编程技能!
109 16
|
2月前
|
Java 程序员 调度
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
105 9
|
2月前
|
安全 Java 程序员
Java面试必问!run() 和 start() 方法到底有啥区别?
在多线程编程中,run和 start方法常常让开发者感到困惑。为什么调用 start 才能启动线程,而直接调用 run只是普通方法调用?这篇文章将通过一个简单的例子,详细解析这两者的区别,帮助你在面试中脱颖而出,理解多线程背后的机制和原理。
93 12
|
2月前
|
监控 Dubbo Java
Java Dubbo 面试题
Java Dubbo相关基础面试题
|
2月前
|
SQL Java 数据库连接
Java MyBatis 面试题
Java MyBatis相关基础面试题