面试题
-
task异步用法,它和thread有什么区别?
1.什么是thread
当我们提及多线程的时候会想到thread和threadpool,这都是异步操作,threadpool其实就是thread的集合,具有很多优势,不过在任务多的时候全局队列会存在竞争而消耗资源。thread默认为前台线程,主程序必须等线程跑完才会关闭,而threadpool相反。
总结:threadpool确实比thread性能优,但是两者都没有很好的api区控制,如果线程执行无响应就只能等待结束,从而诞生了task任务。
2.什么是task
task简单地看就是任务,那和thread有什么区别呢?Task的背后的实现也是使用了线程池线程,但它的性能优于ThreadPoll,因为它使用的不是线程池的全局队列,而是使用的本地队列,使线程之间的资源竞争减少。同时Task提供了丰富的API来管理线程、控制。但是相对前面的两种耗内存,Task依赖于CPU对于多核的CPU性能远超前两者,单核的CPU三者的性能没什么差别。什么是装箱和拆箱?
装箱:从值类型接口转换到引用类型。
拆箱:从引用类型转换到值类型。git 切换到一个分支的命令是什么?A分支代码合并待B分支的命令是什么?
如何使用缓存实现API调用次数限制,阐述实现思路。
怎么实现服务的依赖注入?服务的生存期有哪几种?
如何实现 Web API 的授权访问?说说它的优势。