年前意外的经历了一次阿里的电话面试,话说还没想换工做,但这位业余HR(应该是技术负责人)都没介绍工做岗位和要求,直接就约定某晚的电面时间,抱着好奇的态度被“虐”了一把。html
整体感受这位面试官问的问题很是深,基本都是系统或者原理级别的。不知道是否是表明了阿里面试的基本思路。mysql
内存空间(Runtime Data Area)中能够按照是否线程共享分红两块,线程共享的是方法区(Method Area)和堆(Heap),线程独享的是Java栈(Java Stack),本地方法栈(Native Method Stack)和PC寄存器(Program Counter Register)。面试
固然从1.8开始有一些变化,按照个人理解,原来常量池等信息都储存方法区,如今都移到堆里了。sql
1.8中-XX:PermSize 和 -XX:MaxPermSize 已经失效,取而代之的是一个新的区域 —— Metaspace(元数据区)。在 JDK 1.7 及以往的 JDK 版本中,Java 类信息、常量池、静态变量都存储在 Perm(永久代)里。类的元数据和静态变量在类加载的时候分配到 Perm,当类被卸载的时候垃圾收集器从 Perm 处理掉类的元数据和静态变量。固然常量池的东西也会在 Perm 垃圾收集的时候进行处理。浏览器
JDK 1.8 的对 JVM 架构的改造将类元数据放到本地内存中,另外,将常量池和静态变量放到 Java 堆里。HotSopt VM 将会为类的元数据明确分配和释放本地内存。在这种架构下,类元信息就突破了原来 -XX:MaxPermSize 的限制,如今可使用更多的本地内存。这样就从必定程度上解决了原来在运行时生成大量类的形成常常 Full GC 问题,如运行时使用反射、代理等。缓存
因此升级之后Java堆空间可能会增长。服务器
说实话没有接触过1.0,只知道跟1.0相比1.1能够一次传输多个文件,各种浏览器大概都支持3~5个请求同时发送。数据结构
http2.0也是最近调Nginx才知道的一些,主要就是二进制的格式替代了原来的文本。后来查了资料大概知道增长了多路复用和首部压缩解决了head of line blocking,另外还有server pushing等新特性。协议的东西仍是要看一看官网的说明,不过这东西过一段就容易忘。架构
这题我一直没Get到点,意图实际上是问浏览器缓存对于HTTP Method中Get和Post的请求是否支持,答案就是不支持Post Method。Get能够被浏览器缓存。oop
这题其实我无法答,问的太大,大概瞥过V8的一些机制。好比构建Dom,生成CSS Rule等等。可是真实没有特别系统的理解过。
只知道mysql innoDB join只支持Nested Loop,不支持Hash Join,就是肯定一个驱动表后不断Join获得结果集,再继续往下Join。因此Join的顺序很重要。
索引只知道数据结构是B+Tree,其实就真悲催了。因此反省一下,搜到一篇不错的文章。
这题也是懵了,其实应该回想一下这一句,
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
简写才是
<meta charset="utf-8" />
http-equiv 这个属性就是对应 HTTP response headers 里面的项目,其初衷是让不能(好比没有权限)设定服务器 header 的站点能够经过它来告知浏览器一些页面内容的相关信息。
了解以上就知道确定是后者的优先级更高。
总结一下,裸面被虐残,阿里的面试官绝对是技术大拿,一言不合就问原理,触及灵魂了。检讨本身仍是应用作的太多,协议啊操做系统啊仍是忘得快,没有系统的理解。之后仍是应该多温故知新。