261 lines
8.4 KiB
Plaintext
261 lines
8.4 KiB
Plaintext
# 一面
|
||
## 讲下class文件结构
|
||
|
||
|
||
## import是在class文件哪里存储的
|
||
|
||
|
||
## 类是从哪里加载的
|
||
bootstrap、ext、user
|
||
|
||
|
||
## 栈指令集和寄存器指令集的区别
|
||
http://www.voidcn.com/blog/pq258280920/article/p-4274066.html
|
||
|
||
|
||
## GC算法。
|
||
感觉这个必问的。说了下分代收集。
|
||
|
||
|
||
## Http的action都有哪些
|
||
我回答了GET、POST、PUT、DELETE、HEAD。我说应该还有,但一时想不起来了。他就没继续问了。
|
||
TRACE、OPTIONS
|
||
## http1.0和2.0的区别在哪里
|
||
我说最大的区别就是安全方面。 然后他说还有呢?
|
||
|
||
|
||
## TCP和UDP的区别
|
||
|
||
|
||
## 线程和进程的区别
|
||
|
||
|
||
## QQ应该用哪一种?
|
||
我说QQ主要保证消息不丢失。可以采用TCP和UDP混合的。在网络环境差的时候,用TCP保证消息不丢失。网络环境好的时候,可以采用UDP加快速度。
|
||
|
||
|
||
我感觉对于TCP和UDP的理解不是很到位,知乎有个问题
|
||
https://www.zhihu.com/question/20292749
|
||
## TCP是怎么保证消息可靠性的?
|
||
|
||
|
||
## Git和SVN的区别。
|
||
讲了Git的分布式版本库和SVN的集中式版本库。
|
||
|
||
|
||
## MySQL假如查询非常慢,怎么解决?
|
||
1. 建索引
|
||
2. 分表。
|
||
面试官感觉不太够,问还有吗?
|
||
http://tech.meituan.com/mysql-index.html
|
||
《高性能MySQL》 查询性能优化
|
||
## 排序算法都有哪些。每个的时间复杂度都是多少?
|
||
|
||
|
||
## 单链表排序
|
||
时间复杂度O(nlgn) 空间复杂度O(1)
|
||
可以使用归并排序来做。
|
||
http://noalgo.info/388.html
|
||
## 给两分钟讲下一个你做的最好项目。
|
||
我讲了税务主题爬虫项目。介绍了爬虫的技术。以及我负责URL去重,正文提取以及后期的重构。
|
||
然后面试官根据这几部分分别展开问。
|
||
|
||
|
||
## url去重。
|
||
BloomFilter + 根据文件名去重。
|
||
讲了下为什么这么做。然后面试官问为什么存文件。我说是因为后期恰好也要建搜索引擎,刚好存文件的时候判断文件是否存在。
|
||
面试官好像对搜索引擎很感兴趣,于是似乎想问我搜索引擎的知识,我说这块不是我负责的,但是知道一些。面试官说,不是你负责的就算了吧。
|
||
|
||
|
||
## 正文提取的步骤
|
||
简单说了下所用的哈工大的基于行块密度的正文提取算法,中间也加了常见的杂质过滤,以保证最终结果的纯净。
|
||
|
||
|
||
面试官问了怎么组织这些杂质信息呢?这些信息都放在哪里了呢?
|
||
我说放在了数据库里面,然后启动之后加载到redis里面。
|
||
|
||
|
||
## redis用过吗?讲下你所知道的redis?
|
||
讲了下IO多路复用
|
||
|
||
|
||
## 说下IO多路复用。 epoll和select的区别。epoll的水平触发和边缘触发。
|
||
|
||
|
||
## 说下BloomFilter的原理。
|
||
|
||
|
||
这个幸好我寒假有研究。具体可以看我的博客。这块回答的蛮好的。
|
||
http://www.cyhone.com/2017/02/07/Introduce-to-BloomFilter/
|
||
|
||
|
||
## Hashmap 底层实现
|
||
讲一遍Hashmap的原理。
|
||
|
||
|
||
## Hashmap 可以存null吗?
|
||
value可以为null。key只能有一个为null。
|
||
|
||
|
||
## ConcurrenyHashMap的底层?
|
||
我说没看过源码,但知道他是由分段锁来实现的。也没继续问下去。
|
||
|
||
|
||
## 除了synchronized,还有其他的同步方式?
|
||
重入锁、读写锁。还有一些java提供的同步类。
|
||
|
||
|
||
## 读写锁。加读锁的时候能不能写?
|
||
|
||
|
||
## Web后端是怎么分层的。为什么这么分。
|
||
讲了下MVC和后端的service、dao和action。
|
||
|
||
|
||
我说主要是业务的解耦以及可以分工合作。
|
||
## 讲一下你所知道的docker。
|
||
我说了下docker和虚拟机的区别,主要区别是docker是基于宿主机的内核,而虚拟机是有自己的操作系统内核。
|
||
主要相似性就是都提供了运行环境的隔离。
|
||
http://dockone.io/article/723
|
||
|
||
|
||
然后面试官就根据这个点,深入问了一个问题。
|
||
## 宿主机能不能看到docker的进程
|
||
我说不能看到。其实是可以看到的!
|
||
http://dockone.io/question/529
|
||
|
||
|
||
## NOSQL和SQL的区别,以及每个的应用场景
|
||
|
||
|
||
# 二面
|
||
|
||
|
||
## StringBuffer和StringBuilder的区别
|
||
StringBuilder 线程不安全
|
||
## Java中final的用处
|
||
1. 用于类 不可继承
|
||
2. 用于方法 不可重写
|
||
3. 用于属性 值不可修改,对象不可修改地址
|
||
|
||
|
||
## 什么情况下不用final会编译失败
|
||
这个没回答上来。下来查了一下
|
||
1. 匿名内部类来自外部闭包环境的自由变量必须是final的
|
||
2. 在外部类成员方法内部的内部类。
|
||
3. 在一个代码块block里的内部类。
|
||
https://www.zhihu.com/question/21395848
|
||
|
||
|
||
## 说下HashMap的底层实现
|
||
这个目前所有面试中都问了。 所以HashMap的源码一定要好好看。
|
||
## Java8解决冲突的方式
|
||
我说还是拉链法,似乎不是很满意,然后我说,当超过冲突某个值时,Java8会把链表改为Treemap。
|
||
## ThreadLocal了解多少
|
||
讲了下ThreadLocal的源码实现,thread的localmap对象之类的。
|
||
## 快排的最大时间复杂度、最小时间复杂度、平均时间复杂度。
|
||
## 快排是不是稳定的。
|
||
快排是不稳定的。
|
||
这个真是自己找死,我又说了堆排序是稳定的。实际上是不稳定啊脑子啊脑子。。
|
||
http://baike.baidu.com/item/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E7%A8%B3%E5%AE%9A%E6%80%A7
|
||
|
||
|
||
## 1000万个数据的Top K
|
||
说了最大堆。然后让我计算1000万个int有多大,然后说内存足够。
|
||
然后我讲了下如何用快排实现topk的过程。
|
||
当内存足够的情况下,用快排时间求topk复杂度可以为O(n)
|
||
## TCP的四次挥手
|
||
## UDP一次最大发送多少个字节
|
||
## Http状态码
|
||
主要问了302、404、500
|
||
http://seo.ibw.cn/display.asp?id=82
|
||
|
||
## redis和memcached的区别
|
||
给了个选择题。实际上就是问redis和memcached的差异,最大的差异就是memcached不支持复杂类型如list等。
|
||
## 最快的进程间通信方式是怎么样的
|
||
|
||
|
||
## linux命令
|
||
df -h 查看磁盘空间
|
||
du -h 查看文件夹大小
|
||
lsof 查看端口占用
|
||
top | grep 查看cpu占用
|
||
ps -aux | grep
|
||
|
||
|
||
linux如何查看一个进程的执行路径?
|
||
http://lovesoo.org/view-processes-running-linux-full-path-method.html
|
||
ll /proc/{pid}
|
||
|
||
通过进程名查找进程PID可以通过 pidof
|
||
## 逻辑题。
|
||
五辆汽车加油问题。
|
||
1/5+1/4+1/3+1/2+1
|
||
## 问了一个多分布式消费者请求生产者的问题
|
||
当时一时间没想出来。就往raft协议和一致性hash上面说
|
||
## raft协议、一致性hash
|
||
扯了一波主节点分发,领导者选举,一致性hash啥的。我都不知道我在说啥了,估计面试官也晕晕的。。
|
||
raft协议说完后,面试官问如果没有主控节点,所有节点都是平级的应该怎么如何设计。
|
||
我说应该加分布式锁。
|
||
## 如何实现一个分布式锁。
|
||
我说使用redis可以实现分布式锁,但是具体的怎么实践还不是很清楚。
|
||
具体的分布式锁的细节,都在此博客中有
|
||
http://ifeve.com/redis-lock/
|
||
|
||
|
||
最后面试官介绍说他们是腾讯手机QQ团队
|
||
|
||
|
||
前面两面电面面试完之后,HR通知我去深圳面试,当天有三面和四面。
|
||
# 三面
|
||
手写代码。
|
||
1. 两个字符串前n位忽略大小写的比较。
|
||
2. bitmap实现。
|
||
|
||
|
||
手写完代码之后面试官直接带我去四面,四面是总监面。
|
||
# 四面
|
||
|
||
|
||
1. 英语六级
|
||
我的六级是飘过,面试官对此略不满意。
|
||
2. linux熟悉吗.
|
||
我说了下/proc.面试官让我讲下底层实现。。
|
||
然后面试官问linux下的inode熟悉吗。
|
||
我依稀记得是apue里面讲过,但一点也想不起来了。就说了不知道。
|
||
|
||
|
||
3. TCP为什么四次挥手。
|
||
4. TIME_WAIT阶段是干嘛的。
|
||
5. “六度空间理论”该如何表示
|
||
我说了下用一个巨大的图,然后将其转化为各个节点之间的最短路径问题。
|
||
6. 链表倒数第k个怎么快速找。
|
||
双指针方法
|
||
7. Mac os的发展史
|
||
8. nio
|
||
9. 二叉树遍历,非递归的方式
|
||
|
||
|
||
四面我个人总体感觉还不错,但是面试完后在腾讯大厦等了一下午也没HR面,因为要回武汉就没继续等下去,后来通知结果跪了。
|
||
想想四面走来最终最后跪了,也是蛮遗憾。但是也发现了个人在很多方面的不足。
|
||
|
||
|
||
|
||
|
||
后来发现竟然是因为提前走了被认定为自动放弃。。。。好气。。
|
||
后来参加了腾讯在武汉的校招。到了现场后发现自己被调到了运营开发岗。
|
||
# 一面(运营开发)
|
||
## 从浏览器到服务器请求结果,整个流程
|
||
|
||
|
||
面试完之后面试官通知我过了一面。看面试官心情好,就申请了转岗。
|
||
晚上6点多的时候,被TEG的捞了起来。
|
||
|
||
|
||
# 一面
|
||
|
||
|
||
# 二面
|
||
|
||
|
||
# HR面 |