java面试/笔试题目之Java常见集合(持续更新中)

SRA数据库 简介 序列读取存档(sequence Read Archive,SRA)数据是可通过多个云提供商和NCBI服务器获得的,它是最大的可公开获得的高通量测序数据存储库。 SRA接受来自生活各个部门以及宏基因组学和环境调查的数据。 SRA存储原始测序数据和比对信息,以提高可重复性并通过数据分析促进新发现。 NCBI网站储存二代测序原始数据的数据库 SRA官网 从Entrez搜索结果中下载SRA序列 例如查找SRA Entrez中BALB / c小鼠淋巴结组织的RNA-Seq记录 获取搜索结果 SRA se 阅读详情

声明:题目大部分来源于Java后端公众号,有些个人整理,但答案皆为个人整理,仅供参考。

GitHub:https://github.com/JDawnF

目录

Java中的集合

List 和 Set 区别

1.Set:集合中的对象不按特定方式排序(针对内存地址来说,即非线性),并且没有重复对象。它的有些实现类能对集合中的对象按特定方式排序。

2.List:集合中的对象线性方式储存,可以有重复对象,允许按照对象在集合中的索引位置检索对象。有序可重复。

Set和hashCode以及equals方法的联系

List 和 Map 区别

1.Map:通过键值对进行取值,key-value一一对应的,其中key不可以重复,而value可以重复

区别:

Arraylist 与 LinkedList 区别

1.Arraylist(线程不安全):

2.LinkedList(线程不安全):

区别:

ArrayList 与 Vector 区别

1.Vector(线程安全):

区别:

HashMap 的工作原理及代码实现,什么时候用到红黑树

1.HashMap(线程不安全,基于jdk1.7):

注意:

2.Hashtable(线程安全):

HashMap 和 Hashtable 的区别:

HashSet 和 HashMap 区别:

1.HashSet(线程不安全):

区别:

ConcurrentHashMap 的工作原理及代码实现,如何统计所有的元素个数

1.ConcurrentHashMap(线程安全):

总结

HashMap 和 ConcurrentHashMap 的区别

多线程情况下HashMap死循环的问题

介绍一下LinkedHashMap

HashMap出现Hash DOS攻击的问题

手写简单的HashMap

看过那些Java集合类的源码

什么是快速失败的故障安全迭代器?

Iterator和ListIterator的区别

什么是CopyOnWriteArrayList,它与ArrayList有何不同?

迭代器和枚举之间的区别

总结:


 

Java中的集合

Java中的集合主要分为value,key-value(Collection,Map)两种,存储值分为List和Set,存储为key-value得失Map。

Collection接口中主要有这些方法:

boolean add(Object o)  :向集合中加入一个对象的引用   
void clear():删除集合中所有的对象,即不再持有这些对象的引用  
boolean isEmpty()    :判断集合是否为空   
boolean contains(Object o) : 判断集合中是否持有特定对象的引用   
Iterartor iterator()  :返回一个Iterator对象,可以用来遍历集合中的元素   
boolean remove(Object o) :从集合中删除一个对象的引用   
int size()       :返回集合中元素的数目   
Object[] toArray()    : 返回一个数组,该数组中包括集合中的所有元素
boolean equals(Object o):判断值是否相等
int hashCode(): 返回当前集合的hash值,可以作为判断地址是否想相等

Collection接口继承 Iterable<T> 接口,这个接口可以返回一个迭代器,主要有一下三个方法:

List和Set都是继承Collection接口。

List 和 Set 区别

1.Set:集合中的对象不按特定方式排序(针对内存地址来说,即非线性),并且没有重复对象。它的有些实现类能对集合中的对象按特定方式排序。

  1. 不允许重复对象,只允许一个 null 元素,根据equals和hashcode判断,一个对象要存储在set中,必须重写equals和hashcode方法;
  2. 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator  或者 Comparable 维护了一个排序顺序。
  3. Set 接口最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap 实现的 HashSet;TreeSet 还实现了 SortedSet 接口,因此 TreeSet 是一个根据其 compare() 和 compareTo() 的定义进行排序的有序容器。

2.List:集合中的对象线性方式储存,可以有重复对象,允许按照对象在集合中的索引位置检索对象。有序可重复。

  1. 可以允许重复的对象,可以插入多个null元素。

  2. 是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。

  3. 常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。

Set和hashCode以及equals方法的联系

因为set接口中是不允许存在重复的对象或者值的,所以需要对存入set中的对象或者值进行判断,而hashCode和equals就是用来对这些对象和值进行判断的。

List 和 Map 区别

1.Map:通过键值对进行取值,key-value一一对应的,其中key不可以重复,而value可以重复

区别:

  • Map用 put(k,v) / get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。
  • List通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0)...。(add/get)
  • Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。

Arraylist 与 LinkedList 区别

1.Arraylist(线程不安全):

  • 底层是数组(数组在内存中是一块连续的内存,如果插入或删除元素需要移动内存),可以插入空数据
    public class ArrayList<E> extends AbstractList<E>
            implements List<E>, RandomAccess, Cloneable, java.io.Serializable
    

    实现了 RandomAccess 接口,所以支持随机访问

    private static final int DEFAULT_CAPACITY = 10;

    数组的默认大小为 10。

  • 插入数据的时候,会先进行扩容校验,添加元素时使用 ensureCapacityInternal() 方法来保证容量足够,如果不够时,需要使用 grow() 方法进行扩容,新容量的大小为 oldCapacity + (oldCapacity >> 1),也就是旧容量的 1.5 倍。

    public boolean add(E e) {
            ensureCapacityInternal(size + 1);  // Increments modCount!!
            elementData[size++] = e;
            return true;
        }

     

    • 首先进行扩容校验。
    • 将插入的值放到尾部,并将 size + 1 。
  • 如果是调用 add(index,e) 在指定位置添加的话:
    public void add(int index, E element) {
            rangeCheckForAdd(index);
    
            ensureCapacityInternal(size + 1);  // Increments modCount!!
            //复制,向后移动
            System.arraycopy(elementData, index, elementData, index + 1,
                             size - index);
            elementData[index] = element;
            size++;
        }

     

    • 也是首先扩容校验。
    • 接着对数据进行复制,目的是把 index 位置空出来放本次插入的数据,并将后面的数据向后移动一个位置。
      private void grow(int minCapacity) {
              // overflow-conscious code
              int oldCapacity = elementData.length;
              int newCapacity = oldCapacity + (oldCapacity >> 1);
              if (newCapacity - minCapacity < 0)
                  newCapacity = minCapacity;
              if (newCapacity - MAX_ARRAY_SIZE > 0)
                  newCapacity = hugeCapacity(minCapacity);
              // minCapacity is usually close to size, so this is a win:
              elementData = Arrays.copyOf(elementData, newCapacity);
          }

      扩容最终调用的代码,也是一个数组复制的过程。由此可见 ArrayList 的主要消耗是数组扩容以及在指定位置添加数据,在日常使用时最好是指定大小,尽量减少扩容。更要减少在指定位置插入数据的操作。

  • 删除元素

    public E remove(int index) {
        rangeCheck(index);
        modCount++;
        E oldValue = elementData(index);
        int numMoved = size - index - 1;
        if (numMoved > 0)
            System.arraycopy(elementData, index+1, elementData, index, numMoved);
        elementData[--size] = null; // clear to let GC do its work
        return oldValue;
    }

    需要调用 System.arraycopy() 将 index+1 后面的元素都复制到 index 位置上,该操作的时间复杂度为 O(N),可以看出 ArrayList 删除元素的代价是非常高的。

  • 由于 ArrayList 是基于动态数组实现的,所以并不是所有的空间都被使用。因此使用了 transient 修饰,可以防止被自动序列化。

    transient Object[] elementData;

    保存元素的数组 elementData 使用 transient 修饰,该关键字声明数组默认不会被序列化。

     private void writeObject(java.io.ObjectOutputStream s)
            throws java.io.IOException{
            // Write out element count, and any hidden stuff
            int expectedModCount = modCount;
            s.defaultWriteObject();
    
            // Write out size as capacity for behavioural compatibility with clone()
            s.writeInt(size);
    
            // Write out all elements in the proper order.
            //只序列化了被使用的数据
            for (int i=0; i<size; i++) {
                s.writeObject(elementData[i]);
            }
    
            if (modCount != expectedModCount) {
                throw new ConcurrentModificationException();
            }
        }
    
        private void readObject(java.io.ObjectInputStream s)
            throws java.io.IOException, ClassNotFoundException {
            elementData = EMPTY_ELEMENTDATA;
    
            // Read in size, and any hidden stuff
            s.defaultReadObject();
    
            // Read in capacity
            s.readInt(); // ignored
    
            if (size > 0) {
                // be like clone(), allocate array based upon size not capacity
                ensureCapacityInternal(size);
    
                Object[] a = elementData;
                // Read in all elements in the proper order.
                for (int i=0; i<size; i++) {
                    a[i] = s.readObject();
                }
            }
        }

    当对象中自定义了 writeObject 和 readObject 方法时,JVM 会调用这两个自定义方法来实现序列化与反序列化。序列化时需要使用 ObjectOutputStream 的 writeObject() 将对象转换为字节流并输出。而 writeObject() 方法在传入的对象存在 writeObject() 的时候会去反射调用该对象的 writeObject() 来实现序列化。反序列化使用的是 ObjectInputStream 的 readObject() 方法,原理类似。

2.LinkedList(线程不安全):

  • 底层是基于双向链表实现的,(JDK1.7/8 之后取消了循环,修改为双向链表),不要求内存是连续的,在当前元素存放下一个或上一个元素的地址。
  • 每次插入都是移动指针,改变引用指向即可,效率较高;
  • 查询的时候使用二分法,利用了双向链表的特性,如果index离链表头比较近,就从节点头部遍历。否则就从节点尾部开始遍历。使用空间(双向链表)来换取时间。node()会以O(n/2)的性能去获取一个结点;如果索引值大于链表大小的一半,那么将从尾结点开始遍历。
    public E get(int index) {
            checkElementIndex(index);
            return node(index).item;
        }
        
        Node<E> node(int index) {
            // assert isElementIndex(index);
    
            if (index < (size >> 1)) {
                Node<E> x = first;
                for (int i = 0; i < index; i++)
                    x = x.next;
                return x;
            } else {
                Node<E> x = last;
                for (int i = size - 1; i > index; i--)
                    x = x.prev;
                return x;
            }
        }

    这样的效率是非常低的,特别是当 index 越接近 size 的中间值时。

区别:

  • LinkedList 插入,删除都是移动指针效率很高;查找需要进行遍历查询,效率较低。
  • LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。

  • ArrayList是可改变大小的数组,而LinkedList是双向链接串列

  • 在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的

  • ArrayList的空 间浪费主要体现在在list列表的结尾会预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗比ArrayList更多的空间(因为要存放直接后继和直接前驱以及数据)。

ArrayList 与 Vector 区别

1.Vector(线程安全):

  • 底层也是基于数组实现的,但是add方法的时候使用了synchronized进行同步
    public synchronized boolean add(E e) {
            modCount++;
            ensureCapacityHelper(elementCount + 1);
            elementData[elementCount++] = e;
            return true;
        }
    public synchronized E get(int index) {
        if (index >= elementCount)
            throw new ArrayIndexOutOfBoundsException(index);
    
        return elementData(index);
    }
    这样的话,开销比较大,所以 Vector 是一个同步容器并不是一个并发容器。

区别:

  • ArrayList和Vector都采用线性连续存储空间,当存储空间不足的时候,Vector 每次扩容请求其大小的 2 倍空间,而 ArrayList 是 1.5 倍。
  • ArrayList线程不安全,Vector线程安全
  • Vector可以设置capacityIncrement,而ArrayList不可以,从字面理解就是capacity容量,Increment增加,容量增长的参数。

HashMap 的工作原理及代码实现,什么时候用到红黑树

参考:https://blog.youkuaiyun.com/striveb/article/details/84657326

2.Hashtable(线程安全):

  • 也是实现了Map接口,底层是链表和数组;
  • 继承了Dictionary<K,V>
  • Hashtable的synchronized是对整张hash表进行锁定即让线程独享整张hash表,在安全同时造成了浪费。当一个线程使用put方法添加元素的时候,其他线程不但不能进行put方法添加,也不能进行get方法获取元素,因为得不到锁。

HashMap 和 Hashtable 的区别:

  • HashMap线程不安全,Hashtable因为很多地方加了synchronized,所以它是线程安全的;
  • HashTable使用Enumeration,HashMap 使用Iterator。
  • HashMap不能保证元素的顺序,HashMap能够将键设为null,也可以将值设为null,但是只有一个键为null,值可以多个为null,当get()方法返回null值时,可能是 HashMap中没有该键,也可能使该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。Hashtable不能将键和值设为null,否则运行时会报空指针异常错误;
  • hash值的使用方式不同,Hashtable直接使用对象的hashCode,对table数组的长度直接进行取模;而HashMap计算hash对key的hashcode进行了二次hash,以获得更好的散列值,然后对table数组长度取模;
  • Hashtable
    
    int hash = key.hashCode();
    int index = (hash & 0x7FFFFFFF) % tab.length;
    
    HashMap
    
    static int hash(int h) {
         h ^= (h >>> 20) ^ (h >>> 12);
         return h ^ (h >>> 7) ^ (h >>> 4);
     }
    
    static int indexFor(int h, int length) {
         return h & (length-1);
     }
  • HashMap没有contains方法,而Hashtabl有contains方法。
    //以下是Hashtable的方法
    public synchronized boolean contains(Object value)
    public synchronized boolean containsKey(Object key)
    public boolean containsValue(Object value)
    
    //以下是HashMap中的方法,注意,没有contains方法
    public boolean containsKey(Object key)
    public boolean containsValue(Object value)
    

     

  • Hashtable中hash默认数组大小是11,增加的方式是old*2+1;HashMap中hash数组大小默认是16,而且一定是2的倍数,HashMap会将其扩充为2的幂次方大小;
  • Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。
  • 两者存储规则不一样:
    • HashMap的存储规则:优先使用数组存储, 如果出现Hash冲突, 将在数组的该位置拉伸出链表进行存储(在链表的尾部进行添加), 如果链表的长度大于设定值后, 将链表转为红黑树.

    • HashTable的存储规则:优先使用数组存储, 存储元素时, 先取出下标上的元素(可能为null), 然后添加到数组元素Entry对象的next属性中(在链表的头部进行添加).出现Hash冲突时, 新元素next属性会指向冲突的元素. 如果没有Hash冲突, 则新元素的next属性就是null。

      Entry<K,V> e = (Entry<K,V>) tab[index];
      tab[index] = new Entry<>(hash, key, value, e);

      参照:https://blog.youkuaiyun.com/wangxing233/article/details/79452946

HashSet 和 HashMap 区别:

1.HashSet(线程不安全):

  • 不允许存储重复元素的集合
  • 基于哈希表实现,支持快速查找,但不支持有序性操作。
  • 使用 Iterator 遍历 HashSet 得到的结果是不确定的。
  • 成员变量:
    private transient HashMap<E,Object> map;
    
        // Dummy value to associate with an Object in the backing Map
        private static final Object PRESENT = new Object();

    两个变量:

    • map :用于存放最终数据的。
    • PRESENT :是所有写入 map 的 value 值。
  • 构造函数:利用了 HashMap 初始化了 map 

    public HashSet() {
            map = new HashMap<>();
        }
        
        public HashSet(int initialCapacity, float loadFactor) {
            map = new HashMap<>(initialCapacity, loadFactor);
        }    

     

  •  add方法:

    public boolean add(E e) {
            return map.put(e, PRESENT)==null;
        }

    Hashtable将存放的对象当做了 HashMap 的健,value 都是相同的 PRESENT 。由于 HashMap 的 key 是不能重复的,所以每当有重复的值写入到 HashSet 时,value 会被覆盖,但 key 不会受到影响,这样就保证了 HashSet 中只能存放不重复的元素。

HashSet 的原理比较简单,几乎全部借助于 HashMap 来实现的。所以 HashMap 会出现的问题 HashSet 依然不能避免。

区别:

  • HashMap实现了Map接口,而Hashtable实现Set接口;

  • HashMap存储键值对,Hashtable仅存储对象;
  • HashMap调用put()向map中添加元素;Hashtable调用add()方法向Set中添加元素;
  • HashMap比较快,因为是使用唯一的键来获取对象

ConcurrentHashMap 的工作原理及代码实现,如何统计所有的元素个数

参见:https://blog.youkuaiyun.com/striveb/article/details/84106768

HashMap 和 ConcurrentHashMap 的区别

多线程情况下HashMap死循环的问题

  • 容量大于  总量*负载因子  发生扩容时会出现环形链表从而导致死循环。
  • 并发场景发生扩容,调用 resize() 方法里的 rehash() 时,容易出现环形链表。这样当获取一个不存在的 key 时,计算出的 index 正好是环形链表的下标时就会出现死循环。
  • 这个过程为,先将 A 复制到新的 hash 表中,然后接着复制 B 到链头(A 的前边:B.next=A),本来 B.next=null,到此也就结束了(跟线程二一样的过程),但是,由于线程二扩容的原因,将 B.next=A,所以,这里继续复制A,让 A.next=B,由此,环形链表出现:B.next=A; A.next=B

https://www.cnblogs.com/dongguacai/p/5599100.html

https://blog.youkuaiyun.com/linsongbin1/article/details/54708694

介绍一下LinkedHashMap

HashMap出现Hash DOS攻击的问题

手写简单的HashMap

看过那些Java集合类的源码

什么是快速失败的故障安全迭代器?

快速失败的Java迭代器可能会引发ConcurrentModifcationException在底层集合迭代过程中被修改。故障安全作为发生在实例中的一个副本迭代是不会抛出任何异常的。快速失败的故障安全范例定义了当遭遇故障时系统是如何反应的。例如,用于失败的快速迭代器ArrayList和用于故障安全的迭代器ConcurrentHashMap。

Iterator和ListIterator的区别

●ListIterator有add()方法,可以向List中添加对象,而Iterator不能。

●ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。

●ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。

●都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改

什么是CopyOnWriteArrayList,它与ArrayList有何不同?

https://blog.youkuaiyun.com/striveb/article/details/86744846

迭代器和枚举之间的区别

如果面试官问这个问题,那么他的意图一定是让你区分Iterator不同于Enumeration的两个方面:

●Iterator允许移除从底层集合的元素。

●Iterator的方法名是标准化的。

https://blog.youkuaiyun.com/helongzhong/article/details/52869981

总结:

1. 如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
2. 如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
3. 在除需要排序时使用TreeSet,TreeMap外,都应使用HashSet,HashMap,因为他们 的效率更高。
4. 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
5. 容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。一旦将对象置入容器内,便损失了该对象的型别信息。
6. 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。

 

觉得有收获的,可以来一波赞赏!

Cisco Secure ACS 5.8.0.32 安装 + Crack 教程 在ESXi 6.7 上经历过无数次的安装尝试测试了各种兼容版本都没有安装成功,记最后一次安装成功的过程. 阅读详情

相关推荐

从零解析:富斯i6遥控器与STM32的IBUS协议通信实战

本文详细解析了富斯i6遥控器与STM32通过IBUS协议通信的实战指南,涵盖硬件准备、协议解析、驱动实现及常见问题解决。特别适合机器人及智能小车开发者,提供低成本、高可靠性的无线控制方案,助力快速实现多通道控制功能。

weixin_29193359的博客 439

JAVA笔试题之集合数和多线程

一. 阐述下对于常用的集合数的理解。 答案通过百度百科整理而来,不保证百分百正确。 简述: 集合类是Java数据结构的实现。Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。 集合类是用来存放某类对象的。集合类有一个共同特点,就是它们只容纳对象(实际上是对象名,即指向地址的指针)。这一点和数组不同,数组可以容纳对象和简单...

程序员救不了第四宇宙的博客 2082

STM32F103ZET6【标准库函数开发】------04五个串口配置实战:从零到一构建多串口通信系统

本文详细介绍了STM32F103ZET6标准库函数开发中五个串口(USART/UART)的配置实战,从硬件引脚识别、时钟树配置到多串口系统整合技巧。通过具体代码示例和调试经验,帮助开发者快速构建稳定的多串口通信系统,适用于工业控制、物联网网关等应用场景。

weixin_29188997的博客 343

28道Java集合高频题整理(附答案背诵版)

常见的Java集合可以分为两大类:Collection 和 Map。Java并发集合主要是java.util.concurrent包中的一些线程安全的集合类,它们能够在多线程环境下提供良好的性能。以下是一些常用的并发集合:以上这些并发集合都是设计用来替代传统的线程安全集合(如Vector和HashTable),以及通过Collections.synchronized*方法得到的同步集合。在Java中,"随机访问"意味着我们可以直接通过索引访问集合中的元素,而不需要从开始位置遍历到所需位置。这通常在基于数组的

Angela_L的博客 1614

Skills入门学习路线

简单来说,Skills就像是给Claude准备的”插件包"或”工具箱”。它是一个集合,里面装了特定的操作指令(Instructions)、可执行脚本(Scripts)和相关素材(Resources)。2025 年 10 月中旬,Anthropic 正式发布 Claude Skills。两个月后,Agent Skills 作为开放标准被进一步发布,意在引导一个新的 AI Agent 开发生态。OpenAI、Github、VS Code、Cursor 均已跟进。为了更好的理解,你可以把。

十二测试录 1096

java 关于集合的笔试题_Java集合面试题(一)

1、Collection和Collections的差别java.util.Collection 是一个集合接口,Collection接口在Java类库中有非常多详细的实现。比如List、Setjava.util.Collections 是针对集合类的一个帮助类,它提供了一系列的静态方法实现对各种集合的搜索、排序、线程安全化等操作。2、ArrayList与Vector的差别这两个类都实现了List接...

weixin_39765697的博客 343

GPU硬件架构与微架构深度解析34-GPU安全架构深度解析

现代GPU不仅是图形处理器,更是高性能计算平台,安全架构设计至关重要。内存加密- 保护数据在传输和存储时的安全安全启动- 确保固件和软件的完整性隔离机制- 防止不同应用间的数据泄露密钥管理- 安全存储和处理加密密钥。

2301_79143213的博客 98

Java笔试题大全(附带答案)

一、单选题 1.下列哪一种叙述是正确的(D) A.abstract修饰符可修饰字段、方法和类 B. 抽象方法的body部分必须用一对大括号{ }包住 C. 声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 2.如下代码 public class Test { public int aMethod() { static int i = 0; i++; return i; } public static void main (String args[]) { Test test = new Test

web13618542420的博客 1万+

RT-DETR改进有效系列目录 | 包含卷积、主干、RepC3、注意力机制、Neck上百种创新机制

Hello,各位读者们好Hello,各位读者,距离第一天发RT-DETR的博客已经过去了接近两个月,这段时间里我深入的研究了一下RT-DETR在ultralytics仓库的使用,旨在为大家解决为什么用v8的仓库训练的时候模型不收敛,精度差的离谱的问题,我也是成功的找到了解决方案,对于ultralytics仓库进行多处改进从而让其还原RT-DETR官方的实验环境从而达到一比一的效果。同时本人一些讲解视频和包含我所有创新的RT-DETR文档。

Snu77的博客 3万+

构建基于知识图谱的金融风险关联网络

在金融领域,风险的识别和管理至关重要。传统的风险分析方法往往只能处理单一维度的数据,难以全面捕捉金融市场中复杂的风险关联关系。构建基于知识图谱的金融风险关联网络的目的在于整合多源异构的金融数据,通过知识图谱的方式清晰地展示金融实体之间的复杂关系,从而更准确地识别潜在的金融风险,为金融机构的风险管理决策提供有力支持。本项目的范围涵盖了从金融数据的收集、预处理,到知识图谱的构建,再到金融风险关联网络的搭建和分析。

SuperAGI2025 1418

java面试题-集合篇

java集合相关面试题

qq_33129875的博客 3238

国科大学习资料--计算机网络--历年考题1

国科大学习资料–计算机网络–历年考题1 1、假定有一个通信协议,每个分组都引入100字节的开销用于头和成帧,现在使用这个协议发送1M字节的数据(为方便计算,1M=10^6),然而在传递的过程中有一个字节被破坏了,因而包含该字节的那个分组被丢弃并重传。(1)当数据的分组大小为1000、5000、20000和40000字节时,计算相应(包括开销)的传递字节总数目。(2)计算分组大小的最优值是多少,即分组的大小为何值时总的传输字节数最少。(提示:最优值不是1000、5000、20000和40000字节中的一个)

无名何许人的博客 1180

Java面试/笔试题目之Java基础(持续更新中)

GitHub:https://github.com/JDawnF 声明:题目大部分来源于Java后端公众号,有些个人整理,但答案皆为个人整理,仅供参考。 目录 Java中有几种基本数据类型,各占几个字节? 面向对象的特征:继承、封装和多态 final, finally, finalize 的区别 Exception、Error、运行时异常与一般异常有何异同​ 请写出5种常见到的run...

striveb的博客 1740

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android开发经典笔试面试题汇总(持续更新中)

1.我们都知道Handler是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得很慢,那么线程销毁的方法是:(A) A. onDestroy() B. onClear() C. onFinish() D. onStop() 理解:正确销毁线程的方法应该是handler.removeCallBacks()。 2.SharedPreferences保存文件的路径和

乞力马扎罗的雪CYF的博客 6438

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java大厂笔试&&面试集合大全目录

???? 笔试题 JAVA相关笔试题,祝各位找到好工作! Java基础笔试练习(一) Java基础笔试练习(二) Java基础笔试练习(三) Java基础笔试练习(四) Java基础笔试练习(五) Java基础笔试练习(六) Java基础笔试练习(七) Java基础笔试练习(八) Java基础笔试练习(九) Java基础笔试练习(十) Java基...

Coder编程的博客 1482

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

2020Java笔试/面试题(持续收集整理更新)

说明: 本篇用于收集知识点方便随时巩固,持续更新与纠错。 关于JDK版本,若无特殊说明,默认为JDK 1.8,。 关于JVM版本,若无特殊说明,默认为 HotSpot。 目录 一、Java 基础 1.1Java中的基本数据类型有哪几种?各占用多少字节? 1.2String 在Java中是个特殊的存在,谈谈? 1.3 谈谈 String、StringBuffer、StringBu...

Never-Say-Never 7622

Java工程师面试(持续更新中)——完整的面试流程是如何的!!!!

Java工程师面试第一阶段:自我介绍在大学期间做过哪些项目?在实习中担任的角色第二阶段:离职原因我离职的原因第三阶段:项目描述你能详细讲述一下自己所做的项目吗?第四阶段:技术面试超频面试题(不记录答案)HashMap在JDK1.8前后的区别HashMap和ConcurrentHashMap的区别HashMap和HashTable的区别String,StringBuffer,StringBuild的区别线程的几种实现方式线程的几种状态线程池有所了解吗?有哪几种类型线程池的创建方式?了解哪些锁?sychorni

JavaKobeBryant的技术交流 1939

企业公司软件测试面试笔试题集合:全面备战软件测试面试

企业公司软件测试面试笔试题集合:全面备战软件测试面试 去发现同类优质开源项目:https://gitcode.com/ 企业公司软件测试面试笔试题集合,助你轻松应对软件测试面试挑战,掌握核心知识点。 项目介绍 在当今快速发展的IT行业中,软件测试工程师的角色日益重要。为了帮助求职者更好地准备软件测试相关的面试和笔试环节,企业公司软件测试面试笔试题集合应运而生。该项目汇集了多种企业公司软件测试面试和...

gitblog_06768的博客 760

绝对会帮助到你的Android面试相关文章集合(持续更新中)

1、面试题集合 Android实习僧面试经历记录 BAT 大厂 Android 面试题汇集 2018Android中高级面试题总结 今日头条Android面试 Java面试手册 金三银四,Android高级开发面试题目,帮你助力 写给小白的android基础面试笔试题(一) 写给小白的android基础面试笔试题(二) 写给小白的android基础面试笔试题(三) Androi...

Eric的博客 1595

Java高级笔试宝典覆盖近3年Java笔试中98%高频知识点

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。最后祝愿各位身体健康,顺利拿到心仪的offer!由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!图片转存中…(img-yoHyDYh1-1712035824681)]

2401_84009488的博客 804

「java工程师」常见面试题及其答案(持续更新)

java工程师常见面试题,redis,mysql,面向对象,索引,hashmap,线程池,JVM,消息队列,缓存,分布式,ZK,dubbo,加密

datoujing2019的博客 1609

笔试面试(持续更新)

在这段代码中,变量 b 最初的值是 10。然后,在 try 块中,b 的值增加了 10,变成了 20。接着,由于遇到了 return 语句,try 块中的代码执行到此结束,程序将跳出整个方法。但在方法返回之前,finally 块中的代码会执行。finally 块中的 return 语句会覆盖掉 try 块中的 return 语句,所以最终的返回值是 b 的当前值,即 30。一个印象比较深刻的题目是问try/catch/finally的题目:请问如下代码执行结果?

linjianshaonian_的博客 629

2025华为OD机试已正式切换E卷,E卷新题正在火热更新中,支持在线OJ练习题目,三种语言解答,每日持续更新 (已更新570道)

华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2024e卷,od机试,2024E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2024华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试2024年最新题库,一文带你读懂华为OD,华为机试e卷

KJ.JK 6万+

Java面试题汇总(持续更新)

Java面试题汇总(欢迎各位补充) String 相关面试题目 问:String、StringBuffer、StringBuilder 的区别是什么? 答:String 是字符串常量,StringBuffer 和 StringBuilder 都是字符串变量,后两者的字符内容可变,而前者创建后内容不可变;StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,线程安全...

Jesse_liao的博客 1817

最新java开发面试笔试题及答案---图片(面试题系列持续更新中)(1)

JAVAEE工程师笔试题 答题人 1. 你最常上的,一一术站和最常使用的两个P分别是什么?主要解决你什么需求? 2 请简述http协议中get请求和post请求的区别, 3. 请简述session和cookie的区别. 4 简述Servlet与sP的关系, 5. SP内置对象有哪些,各自起到的作用 6. 简述你所理解的AVA封装、继承、多态 7 写出2个常用的设计模式(伪代码),并简述应用场景。 8.HashMap和HashTable区别. 9.HashSet和TreeSet的区别. l0.ArrayLis

南北极之间 603
上一篇: Java面试/笔试题目之Java基础(持续更新中)
下一篇: 浅谈servlet源码
striveb
博客等级 码龄10年 242粉丝 117原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值