ps. 此文旨在纪录本人面试的经历,如有对文中的人或者公司有所冒犯,请海涵,不能接受者请mail我,说明情况,我将删掉相关文章
ps. 面试了几次之后发现大家问的都差不多,知识点都在以下几个方面
1. 以hashmap为代表的集合数据结构
2. 以memcache 和 redis为核心的缓存架构
3. 偶尔让你说下多态的概念和理解
4. 举出几个设计模式的情况
5. servlet的流程,偶尔会出现post,get之类的区别这样的问题
6. 一些传统的公司(主要指非互联网的公司)会问你SSH或者Ibatis的内容,而且问的比较细致
7. 会问下你使用的web容器,通常是 tomcat ,jetty
8. 如果你对分布式感兴趣,会问到一致性hash和红黑树查询的逻辑
9. 如果你对数据库感兴趣,会问到数据库索引,和优化方面的知识
10. 系统方面,会问你对多线程的理解,不会问有几种实现方法(这太初级,因为只要项目中写了,你肯定知道,如果不知道,那么你就是大忽悠),主要会问你线程优化方面
大概这些吧,想到了再补。
上面这些东西都是考平时的积累,接下来会出一些算法题目或者场景题目来考你运用知识的能力。这种题目不好回答。接下来面试的话,我主要会注意这些内容。
假设有个系统,系统里面有四个基于网络的子系统,这四个子系统的业务逻辑完全不一样,你设计一下这个系统,要达到下面三个要求,1, 10w pv, 2,统一认证,只要有一个账户就可以同时访问这些系统,3. 移动api
拿到这个题目,搜索了下我的知识储备和架构相关的有:
1. 代理服务 proxy
2. 请求分发 nginx
3. 分布式缓存 memcache
4. 网站加速 cdn
5. 数据库集群 mysql
所以就只能基于这些来设计了,了解这技术的估计你知道怎么设计了,最后移动api的内容不会了,还好我看过腾讯和百度的openapi.
接下来介绍下上面提到的技术,内容来自网络。
//todo