![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 91
码农参上
这个作者很懒,什么都没留下…
展开
-
面试官又整新活,居然问我for循环用i++和++i哪个效率高?
原创:微信公众号 码农参上,欢迎分享,转载请保留出处。前几天,一个小伙伴告诉我,他在面试的时候被面试官问了这么一个问题:在for循环中,到底应该用 i++ 还是 ++i ?听到这,我感觉这面试官确实有点不按套路出牌了,放着好好的八股文不问,净整些幺蛾子的东西。在临走的时候,小伙伴问面试官这道题的答案是什么,面试官没有明确告诉答案,只是说让从程序执行的效率角度自己思考一下。好吧,既然这个问题被抛了出来,那我们就见招拆招,也给以后面试的小伙伴们排一下坑。思路前面提到,这个搞事情的面试官说要从.原创 2021-11-24 11:26:10 · 1037 阅读 · 3 评论 -
面试官:说说什么是泛型的类型擦除?
先看一道常见的面试题,下面的代码的执行结果是什么?public static void main(String[] args) { List<String> list1=new ArrayList<String>(); List<Integer> list2=new ArrayList<Integer>(); System.out.println(list1.getClass()==list2.getClass());}首先,我原创 2021-08-24 09:31:34 · 693 阅读 · 0 评论 -
String s=“a“+“b“+“c“,到底创建了几个对象?
首先看一下这道常见的面试题,下面代码中,会创建几个字符串对象?String s="a"+"b"+"c";如果你比较一下Java源代码和反编译后的字节码文件,就可以直观的看到答案,只创建了一个String对象。估计大家会有疑问了,为什么源代码中字符串拼接的操作,在编译完成后会消失,直接呈现为一个拼接后的完整字符串呢?这是因为在编译期间,应用了编译器优化中一种被称为常量折叠(Constant Folding)的技术,会将编译期常量的加减乘除的运算过程在编译过程中折叠。编译器通过语法分析,会将常量表达原创 2021-08-16 09:58:16 · 2420 阅读 · 0 评论 -
面试侃集合 | DelayQueue篇
面试官:好久不见啊,上次我们聊完了PriorityBlockingQueue,今天我们再来聊聊和它相关的DelayQueue吧。Hydra:就知道你前面肯定给我挖了坑,DelayQueue也是一个无界阻塞队列,但是和之前我们聊的其他队列不同,不是所有类型的元素都能够放进去,只有实现了Delayed接口的对象才能放进队列。Delayed对象具有一个过期时间,只有在到达这个到期时间后才能从队列中取出。面试官:有点意思,那么它有什么使用场景呢?Hydra:不得不说,由于DelayQueue的精妙设计,原创 2021-06-29 14:47:00 · 176 阅读 · 0 评论 -
面试侃集合 | PriorityBlockingQueue篇
面试官:来了啊小伙子,以前经常有小菜鸟被我虐个两三轮就不敢来了,看你忍耐力还不错,以后应该挺能加班的样子。Hydra:那可是,我卷起来真的是连我自己都害怕啊!面试官:那咱们今天就继续死磕队列,聊聊PriorityBlockingQueue吧。Hydra:没问题啊,PriorityBlockingQueue是一个支持优先级的无界阻塞队列,之前介绍的队列大多是FIFO先进先出或LIFO后进先出的,PriorityBlockingQueue不同,可以按照自然排序或自定义排序的顺序在队列中对元素进行排序。我原创 2021-06-15 09:33:41 · 342 阅读 · 0 评论 -
面试侃集合 | SynchronousQueue非公平模式篇
面试官:好了,你也休息了十分钟了,咱们接着往下聊聊SynchronousQueue的非公平模式吧。Hydra:好的,有了前面公平模式的基础,非公平模式理解起来就非常简单了。公平模式下,SynchronousQueue底层使用的是TransferQueue,是一个先进先出的队列,而非公平模式与它不同,底层采用了后进先出的TransferStack栈来实现。下面我们还是先写一个例子来看看效果,首先创建3个线程使用put方法向SynchronousQueue中插入数据,结束后再使用3个线程调用take方法:原创 2021-06-08 09:00:07 · 164 阅读 · 0 评论 -
面试侃集合 | SynchronousQueue公平模式篇
面试官:呦,小伙子来的挺早啊!Hydra:那是,不能让您等太久了啊(别废话了快开始吧,还赶着去下一场呢)。面试官:前面两轮表现还不错,那我们今天继续说说队列中的SynchronousQueue吧。Hydra:好的,SynchronousQueue和之前介绍过的队列相比,稍微有一些特别,必须等到队列中的元素被消费后,才能继续向其中添加新的元素,因此它也被称为无缓冲的等待队列。我还是先写一个例子吧,创建两个线程,生产者线程putThread向SynchronousQueue中放入元素,消费者线程take原创 2021-06-03 16:50:36 · 200 阅读 · 0 评论 -
面试侃集合 | LinkedBlockingQueue篇
面试官:好了,聊完了ArrayBlockingQueue,我们接着说说LinkedBlockingQueue吧Hydra:还真是不给人喘口气的机会,LinkedBlockingQueue是一个基于链表的阻塞队列,内部是由节点Node构成,每个被加入队列的元素都会被封装成下面的Node节点,并且节点中有指向下一个元素的指针:static class Node<E> { E item; Node<E> next; Node(E x) { item = x; }原创 2021-05-24 09:18:07 · 320 阅读 · 0 评论 -
面试侃集合 | ArrayBlockingQueue篇
面试官:平常在工作中你都用过什么什么集合?Hydra:用过 ArrayList、HashMap,呃…没有了面试官:好的,回家等通知吧…不知道大家在面试中是否也有过这样的经历,工作中仅仅用过的那么几种简单的集合,被问到时就会感觉捉襟见肘。在面试中,如果能够讲清一些具有特殊的使用场景的集合工具类,一定能秀的面试官头皮发麻。于是Hydra苦学半月,再次来和面试官对线面试官:又来了老弟,让我看看你这半个月学了些什么Hydra:那就先从ArrayBlockingQueue 中开始聊吧,它是一个具有线程安原创 2021-05-17 13:08:58 · 412 阅读 · 0 评论