| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> web微信开发工具,CSS浮动实战 -> 正文阅读 |
|
[开发工具]web微信开发工具,CSS浮动实战 |
有些线程它活着,但它躺在池中碌碌无为; 有的线程它死了,于是它变成一道面试题。 这次的文章,要从一次阿里的面试说起。 我记得那天是周一,刚刚经历过周末过的放松,干劲十足的我正在键盘上疯狂的输出。这时,我的手机响了起来,拿起一看,是来自杭州的电话,心想这次是要给我推荐股票呢还是要让我贷款呢。我接起了电话,准备“调戏一番”。那边响起一个声音:“你好,请问是xxx吗?这边是杭州阿里巴巴,现在有时间进行电话面试吗?”。说实在的,听完这句话后,我感觉我已经身在杭州,干劲十足的在杭州的阿里的工位上"修福报"。但是我现在正在疯狂输出,没有时间,于是我说:“不好意思,现在没有时间,可以约在今天晚上8点钟吗?”. 晚上如约接到了电话。我们直奔主题,在你来我往中进行了友好的技术交流。具体的面试过程就不详述了,后面有机会整理一份面试分享。整个面试过程中,有这么一道题给我留下了深刻的印象:
需要说明一下,文中讨论的线程池都是Executors线程池。 对于Executors线程池我可以说是烂熟于心,因为工作中用的比较的多,阅读过其源码。也是我作为面试官时必问的几个范围之一,比如以下问题:
阿里巴巴java开发手册关于线程池创建的建议 这一系列关于线程池的连环炮,就是我作为面试官时必问的几个问题。别问为什么,因为我们的招聘JD上明确写了:熟悉多线程编程。而这些问题,我觉得是熟悉多线程编程的基础。这里我也不解答了,这种文章网上还是挺多的,可以去了解一下。 这块真的很重要,我也多次给我的小伙伴强调: 来吧,一起分析一波好了现在回到阿里的面试官问我的这道面试题:
我的回答总结起来三句话:
测试用例写起来抛出堆栈异常为啥对了一半?先让程序跑起来,我们用事实说话: 从执行结果我们看出
所以,现在知道为什么回答:抛出堆栈异常只对了一半吧。 源码之下无秘密: 在_java.lang.ThreadGroup#uncaughtException_进行了异常处理: 这个uncaughtException是何许人也,看java doc上咋说的: 这个方法是JVM调用的,我们只需要指定我们想要的处理方式即可。
当执行方式是submit时: 其本质也是调用了execute方法,所以它还是回到_java.util.concurrent.ThreadPoolExecutor#runWorker_方法: 向前,继续跟进去看看: _java.util.concurrent.FutureTask#setException_干啥了啊,瞅一眼: 深呼吸,整理好思路,我们马上走向最终的真相: 好了,第一个议题【抛出堆栈异常为啥对了一半?】讨论完毕。在源码里面走了一趟,现在我们可以给出这一部分的满分答案了。 不影响其他线程任务,回答正确这一部分我们直接上代码,运行起来看结果吧: 代码和运行结果是不会骗人的: 这个线程会被放回线程池为啥全错了?我们去源码里面寻找答案: 让源码给出答案: 5号线程去哪里了? new Worker()方法会告诉你:5去哪里了。 再配上这张由我这个灵魂画师亲自操刀画的图,一起食用,味道更佳: 现在知道为啥:我回答这个线程会被放回线程池为啥全错了吧。还附带送你一个线程名称变化的细节,不客气。 总结一下
最后分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。 面试经验技巧篇
面试真题篇
面试技巧整理司校园招聘技术类笔试题
[外链图片转存中…(img-mP9dSPIf-1627109551919)]
面试技巧整理整理不易,点个关注再走吧 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/20 13:28:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |