计算的本质
图灵将世界上的数学问题分成了两类,一类是可以用图灵机在有限步内完成计算的,另一类是不可以的。今天我们说一个软件问题能不能计算,其实不是指数学计算,而是能否用图灵机这个简单逻辑来计算。图灵机给后人设计计算机制定了一个行之有效的原则,就是计算机可以通过存储地址、计算机状态、规则表和当前位置的读写来进行计算。
图灵将世界上的数学问题分成了两类,一类是可以用图灵机在有限步内完成计算的,另一类是不可以的。今天我们说一个软件问题能不能计算,其实不是指数学计算,而是能否用图灵机这个简单逻辑来计算。图灵机给后人设计计算机制定了一个行之有效的原则,就是计算机可以通过存储地址、计算机状态、规则表和当前位置的读写来进行计算。
整理一些来自网络的Java基础面试题,内容涵盖语言基础、并发、JVM、IO模型、中间件、开发框架等等。本章节的面试题有:说说常见的排序算法和复杂度;如何实现一个冒泡排序算法;如何遍历一棵二叉树;如何倒排链表;如何递归遍历目录下面所有文件;描述一下链式存储结构,并用代码实现双向链表。
我们总以为学习一定会有收获,其实方法不当,既让人身心疲惫,也没有切实的回报。不少人每天都看技术文章,第二天就忘干净了。面试官问技术方案,明明心里清楚,口述出来却前言不搭后语。面试官再问底层算法,你说看过但是忘记了。他不在乎你看没看过,答不上就是零分。正如男女相亲,平时男方挺能说,关键时候却支支吾吾,姑娘必然认为他不行。学到的东西,无法说出来让他人理解,本质是没有真正的弄懂。高效学习的诀窍是:把自己当成一台计算机,既有输入,也要有输出,用输出倒逼输入。
HashMap的put操作做了什么;元素在数组中的位置怎么计算出来的;红黑树有什么优势,为什么要将链表转成红黑树;什么情况下数组会扩容。