我能讲明白哪些技术?
极客时间《面试现场》学习笔记
13 | 你真能讲明白技术吗?
从两个维度讲清技术,对我来说,从应用维度是弱项,那么就得想办法加强内部设计维度的把握。
对于面试官,我可能需要进行更多的面试来演练,可以在面试现场琢磨一下面试官的想法。
结构化、可视化、举例子、做类比、对比,还有讲故事,表达方式上还真是多种多样。我自己可能有说话节奏比较快的问题。
因为自己没有拿得出手的技术,所以不知道该如何去讲。其实可以稍微准备一下,比如测试驱动开发、MySQL,最近还考虑去学习一下 Go 语言和 Java Spring
技术的两个维度八个方面:
外部应用维度:问题、技术规范、最佳实践、市场应用趋势
内部设计维度:目标、实现原理、优劣趋势、技术演进趋势
如果每个技术能够讲到这个程度,那么应该是可以和面试官谈笑风生了。可惜的是无论是 Java 多线程还是 Ruby 元编程,我暂时还没有能力讲明白。其实这种讲法,在某种程度上有点类似于费曼学习法。
这里所提到的沟通方法,其实不仅仅适用于面试,同样也适合技术沟通和日常交流。
如果说清楚 Java 多线程(以下内容摘取自专栏文章)
应用维度
问题:Java 多线程的产生,是因为要并发,从而使程序多种功能相应更快,用户体验更好。
技术规范:在 Java 中,可以实现 Runnable 接口、拓展 Thread 类来实现代码并发;Java 提供 synchronized 关键字和各种锁,帮助控制并发代码行为和衍生问题。
最佳实践:在多线程场景下实现锁来确保线程通读,但是加锁和释放非常消耗资源,可以考虑使用 CAS 方式实现无锁的线程同步,并且采用时间戳的方式来解决 ABA 问题。
市场应用趋势:Java 从低并发逐渐发展到高并发,充分利用系统能力,减少响应时间。
设计维度
目标:Java 多线程要在优先级调度、锁、信息同步方面达成的目标
实现原理:Java 多线程的实现原理包括内核线程、使用用户态线程、使用用户态线程加轻量级进程混合等部分,还包括硬件指令集、Test and Set、各种锁
优劣局限:Java 多线程编程采用共享内存方式,锁的开销比较大,编程难度大,难以调试
演进趋势:Java 5 提供 jcu 包,实现了多种锁的结构,简化开发;Java 7 加入 Future 来获取线程返回值
版权声明: 本文为 InfoQ 作者【escray】的原创文章。
原文链接:【http://xie.infoq.cn/article/45bebe38bf42438a34538eecd】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论