问题一:如何实现一个JVM
答:面试官(很好的一个,不是很好的两个面试官)一开始就来了这么一个问题,可能是我的简历上面写了些JVM相关的东西吧。一下就蒙了,然后就开始回忆编译原理。准备来拿编译原理说事。面试官提示javac是干嘛用的。果断意会,面试官的意图。然后就从java文件的编译开始说,编译时执行语法检查,然后通过之后生成class文件。加载class文件生成语法树,然后解析词法,分析语义,分配内存,执行程序。。。。。。
最后忘记了JSR,如果当时把JSR说出来,然后,根据JSR来做的话就比较完美了。
问题二:Servlet的生命周期
这个无非就是Servlet 的生命周期函数,以及对Servlet的概述
问题三:解释下volatile
不解释,自己百度吧
问题四:JVM最多可以占多大的内存
这个问题没有答好,其实感觉这个涉及的东西比较多。比如和操作系统的位数有关,32位的操作系统和64位的操作系统中是不一样的。堆的内存的大小对程序的性能也是有一定影响的。一般堆最大分配2G就可以了。如果太大,就会导致Stop The World停止的时间太久。堆越大,对GC就越不利。
问题四:实现一个生产者消费者队列(写代码)
这个表现有点鸡肋。很是对不住考官。在这里向考官表示深深的歉意,当时实在是有点紧张,思绪比较乱。耗时比较长,而且还。。。。。。。。。。
相关阅读: