`
初学者2016
  • 浏览: 2432 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

Java常用面试题

 
阅读更多

1.字符串

      A:字符串一旦被赋值就不能被改变。

        B:String s = new String("hello")String s = "hello";的区别

            前者创建了2个对象

            后者创建了1个对象

 

2.集合和数组的区别?(面试题)

 * 集合:

 *     1:长度可以发生改变。  

 *      2:只能存储对象类型。引用类型。

 *      3:可以存储任意类型的对象。

 * 数组:

 *      1:长度固定。

 *      2:可以存储基本类型,也可以存储对象类型。

 *      3:只能存储同一种类型的元素。

 

3.用迭代器遍历集合的时候,用集合修改集合有没有问题?如果有,怎么解决?

ConcurrentModificationException:并发修改异常。

 * 为什么?

 *      迭代器是依赖于集合而存在的。

 *      我们在通过迭代器迭代的过程中,用集合往集合中添加了元素。

 *      而并没有重新获取迭代器,所以,报错。

 *     

 *      原因:

 *          在迭代器迭代的过程中,是不能通过集合去修改集合的。

* 解决方案:

 *      A:用集合本身遍历集合,用集合去修改集合。

 *          集合实现。添加成功,元素添加到末尾。

 *      B:用迭代器迭代,用迭代器修改元素。

 *          迭代器实现。添加成功,遍历到哪里,添加到哪里。

 *

// 创建集合

        List list = new ArrayList();

        list.add("zhangsan");

        list.add("lisi");

        list.add("wangwu");

        // 有问题

//      Iterator it = list.iterator();

//      while (it.hasNext()) {

//      String s = (String) it.next();

//      if ("lisi".equals(s)) {

//      list.add("zhaoliu");

//      // it = list.iterator();

//      } }

 

        // 用集合实现

         for (int x = 0; x < list.size(); x++) {

         String s = (String) list.get(x);

         if ("lisi".equals(s)) {

         list.add("zhaoliu");

         }

         }

 

        // 用迭代器实现

        ListIterator lit = list.listIterator();

        while (lit.hasNext()) {

            String s = (String) lit.next();

            if (list.equals("lisi")) {

                lit.add("zhaoliu");

            }   }

 

4. LinkedList模拟栈数据结构的集合,并使用。

*      A:这个题目的意思是指你应该自己定义一个集合类。

*      B:你在集合类中可以有一个LinkedList可以使用。

/*

 * 自定义栈使用

 */

public class MyStack {

     private LinkedList link;

     public MyStack() {

         link = new LinkedList();

     }

 

     public void add(Object obj) {

         link.addFirst(obj);

     }

 

     public Object get() {

         // return link.getFirst();

         return link.removeFirst();

     }

 

     public boolean isEmpty() {

         return link.isEmpty();

     }

}

 

5MapCollection集合的区别(面试题)

         A:Map集合存储的是键值对形式的元素。

          Collection集合存储的是单个的元素。

        B:Map集合的键是唯一的。

          Collection的儿子Set集合元素是唯一的。

        C:Map集合的值是可以重复的。

          Collection的儿子List集合的元素是可以重复的。

 

6.HashtableHashMap的区别?(面试题)

        A:HashMap 线程不安全,效率高。允许null键和null值。

        B:Hashtable 线程安全,效率低。不允许null键和null值。

 

7flush()close()的区别?

 * A:flush() 刷新缓冲区,流对象还可以继续使用。

 * B:close() 释放资源,但是会先刷新一次缓冲区,保证数据不丢失,操作完毕后,流对象不可以再被使用。

 

8.多线程程序出现安全问题的原因:

 *      A:是多线程程序。

 *      B:有共享数据。

 *      C:针对共享数据有多条语句操作。

现在的程序存在着问题,所以,我们要改进该程序,让它没有问题。怎么改进呢?

* 只需要把多线程环境中,操作共享数据的操作给变成单线程就没有问题了。

 * Java针对这种情况,就提供了同步技术:同步代码块。

 *      格式:

 *          synchronized(对象) {

 *              需要被同步的代码。

 *          }

 *      A:对象?

 *    如果不知道用哪个对象,就用Object对象。同步的锁对象

*    代码块:任意对象方法:this,静态方法:类名.class

 *    B:需要被同步的代码?

 *    哪些代码导致出现了问题,就把哪些代码给同步起来。

 

* 加入同步后,居然还有问题,为什么呢?

 *      同步代码块中的对象针对多个线程必须是同一个。

 *      其实这个对象被称为同步锁对象。

 

9 sleep()wait()方法的区别?

       sleep():必须指定时间。不释放锁对象。

        wait():可以指定时间,也可以不指定时间。释放锁对象。

 

10.单例模式

   要求:类在内存中的对象只有一个。

    举例:打印机,网站访问量计数

    分类:                      

        饿汉式  加载就创建对象。

        懒汉式  用的时候才去创建对象。

    请问我们要掌握哪种方式?

        开发:饿汉式

        面试:懒汉式

        为什么?

            因为饿汉式不会出现线程安全问题。

            懒汉式:

线程安全问题。你要能够给比人分析出安全问题的原因,并最终提供解决方案。延迟加载思想。(懒加载思想。)

        Runtime本身就是一个饿汉式的体现。

 

 

0
0
分享到:
评论

相关推荐

    50个Java常用面试题

    - 在Java中,使用"=="运算符比较两个对象的内存地址,即判断两个引用是否指向同一个对象实例。 - 使用equals()方法比较两个对象的内容是否相等。equals()方法继承自Object类,其默认实现等同于使用"==",但可以...

    JAVA常用面试题(含答案)

    本资料集“JAVA常用面试题(含答案)”涵盖了Java语言的基础知识、进阶概念以及实际应用中的常见问题,旨在帮助求职者在面试中表现出色。 1. **基础篇** - **变量与数据类型**:Java中的基本数据类型包括整型(byte,...

    java常用面试题.txt

    java常用面试题.txt

    Java面试,38道Java常用面试题

    Java面试,38道Java常用面试题。

    经典的java常用面试题

    【Java 常用面试题详解】 在Java面试中,面试官经常关注以下几个核心知识点,这些也是Java开发者必备的基础技能: 1. **访问修饰符的区别**: - `public`:任何类都可以访问,无限制。 - `private`:只在当前类...

    java常用面试题集合.rar

    "java常用面试题集合.rar"提供了丰富的面试题资源,旨在帮助求职者提升面试技巧,增强对Java原理的理解。 一、Java基础 1. **Java内存管理**:理解Java的堆内存和栈内存,以及对象的生命周期,包括创建、引用、...

    java常用面试题集锦

    Java是一种广泛使用的面向对象的编程...这些知识点只是Java面试题中的一部分,实际面试可能会涉及更深入的技术,如设计模式、JMS、分布式缓存、微服务架构等。通过不断学习和实践,才能在面试中展现出扎实的Java技能。

    java常用面试题

    在Java中,这种方法可以提高代码的执行效率。 此外,代码中还涉及到位操作的示例,例如用异或操作实现无额外空间的整数交换,以及对四个线程同时操作共享变量`j`的简单模拟,这是并发编程中的常见场景,涉及到线程...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题04.java中int占几个字节.mp4 │ Java面试题05.java面向对象的特征.mp4 │ Java面试题06.装箱和拆箱.mp4 │ Java面试题07.==和equals的区别.mp4 │ Java面试题08.String.mp4 │ Java面试题09.讲一下java...

    java常用面试题及答案

    【Java面试】常见问题解析 1. **多态的好处与实现方式** 多态是面向对象编程的重要特性,它可以允许不同类的对象对同一消息作出响应。多态带来的好处包括: - 可替换性:多态使得代码更加灵活,可以方便地替换...

    java常见面试题(史上最全最经典-希望对你有用)

    Java常见面试题 Java是最流行的编程语言之一,掌握Java的基础知识是非常重要的。在这里,我们总结了Java常见的面试题,涵盖了Java的基础部分,包括基本语法、类相关的语法、内部类的语法、继承相关的语法、异常的...

    2023最新JAVA面试题集

    Git常用命令面试题 60道 Java并发编程最全面试题 123道 Kafka知识汇总 18道 Linux面试题 50道 Memcache 面试题 23道 MyBatis面试题 37道(含答案) MySQL高频面试题 40道(含答案) Netty面试题 20道 Nginx面试题 23...

    Java常用面试题合集

    分享有关常用的JAVA面试合集。

    java中高级面试题十大总结

    Java作为一门广泛使用的编程语言,其中高级面试题往往涵盖了多方面的知识点,旨在考察候选人的技术深度和广度。以下是对这些面试题的详细解析: 1. **内存管理与垃圾回收** - Java的内存分为堆内存(Heap)和栈...

    java 常用面试题,面试刷题必备

    为了在Java面试中脱颖而出,了解并掌握常见的面试题是至关重要的。以下是一些核心的Java知识点,这些都是面试官可能会问到的问题,同时也是准备面试时需要重点复习的部分。 1. **Java基础** - 类与对象:理解面向...

    2017java面试题

    "2017java面试题"这个压缩包文件提供了丰富的资源,帮助Java开发者准备面试,深化对Java开发的理解。 文档"Java面试宝典2017.doc"可能包含了以下核心Java知识点: 1. **基础语法**:这包括变量、数据类型、运算符...

    Java后端面试题

    ### Java面试题知识点概览 #### 面向对象概念 1. **super()与this()的区别**: - `super()`用于调用父类的构造方法或父类成员方法。 - `this()`用于调用本类中的其他构造方法。 2. **作用域public, protected, ...

    Java面试题和练习题

    3. 运算符:熟悉Java中的算术运算符、比较运算符、逻辑运算符和位运算符等,并能正确使用它们进行计算。 4. 控制流程:掌握if语句、switch语句、for循环、while循环和do-while循环的使用。 5. 函数:理解函数的...

Global site tag (gtag.js) - Google Analytics