周三笔试完,周五就收到周六的视频面试邮件,效率很高。抱着积累经验的心态,却让我一晚都睡不着觉。
面试官都很好,特别是最后一面的大佬。
一面
一面是一个比较年轻的小哥,感觉是看着简历一个一个问的。
自我介绍
介绍项目
从输入URL到显示页面的过程
1. 说说从服务器响应到显示页面这个过程。(不会)
2. 通过DNS服务器获取IP的过程。
首先浏览器先检查本地hosts文件是否有这个网址映射关系,如果有就调用这个IP地址映射,完成域名解析。
如果没找到则会查找本地DNS解析器缓存,如果查找到则返回。
如果还是没有找到则会查找本地DNS服务器,如果查找到则返回。
最后迭代查询,按根域服务器 ->顶级域,.cn->第二层域,hb.cn ->子域,www.hb.cn的顺序找到IP地址。
MySQL的索引
说下ACM和做Web项目的区别
一个字符串题目
一个开放性题目
现在有一个大文件,文件里面存储着很多行,每一行的数据是一个string和一个int,即一个<K,V>键值对,现在内存空间不足,问如何将同样的key的value求和。
我说将这个大文件分成多个小文件,然后对这些小文件利用map之类的数据结构去统计。然后面试官问如何分成多个小文件。我说了可以根据前缀和或者长度这些规则,到后面说了可以用字符串哈希映射到一个范围内的数中。
二面
二面面试官没有视频。
自我介绍
写个判两点是否联通的题目
Java的HashTable和HashMap
数据库引擎
Group By 的使用
写个单例模式(不会)
public class Sinleton {
public volatile static Sinleton sinleton;
private Sinleton() {}
public static Sinleton getSinleton() {
if (sinleton == null) {
synchronized(Sinleton.class) {
if (sinleton == null) {
sinleton = new Sinleton();
}
}
}
return sinleton;
}
}
Git的原理是怎么样的
讲了下工作区、暂存区、本地仓库和远程仓库。
reset操作的参数(不会)
大概是hard,soft这些。
reset参数介绍
三面
从十二点二面结束后等了很久,没吃午饭,到一点半左右才开始。面试官是经理。期间听到一些其他面试官同样也在面试。
自我介绍
内存只有4G,malloc一个8G大小的东西,这个时候会发生什么
给了我三个选项,第一个是崩溃,第二个是MLE,第三个是正常运行。
我在第二个和第三个不太确定,说了下自己的想法,第三个的时候讲了虚拟内存,然后面试官就让我解释一下,然后反问我既然你讲了虚存,现在还不确定吗。我就确定说是第三个了。
说下三次握手
网络编程(不会)
1. socket建立连接时候的API和三次握手的关系
2. Java里面网络通信是怎么样的
一道旋转链表的题目
一道判断两个二叉树是否一样的题目
一个开放性题目
主要是涉及到多台机器如何处理缓存,设计一种映射算法,将数据映射到多台机器中。
讲了不完整的一致性哈希。
一致性哈希介绍