笔试准备:
刷题:牛客网、CSDN、GitChat上都有很多笔试指导方向。
面试准备:
流程原则(WWH):
面试:这个东西是什么,它是用来干什么的,它是怎么干的。
不管面试官问你这三个中的哪一个,你把它们都连着说了,不过说的时候的顺序要注意,先回答面试官问的那个流程,然后你再把其他那两个联合起来。
对比原则:
面试官可能会问你,这个也可以,为什么不用这个而要用它呢。
这个就要求你将你稍微熟悉的有相同作用的技术做个对比分析,逻辑清晰地表达你选它的原因。
我们选一个东西,无外乎是因为它既能实现我们的需求,又在同行之间有着跟我们需求息息相关的好处。
分析:假如你在项目中写到用了Redis,但是面试官问你为什么不用Memcache。
在这里,你就结合自己的业务表明你为什么用Redis,结合其他几个原则,例如
扩展原则:
如果面试官问到你这个东西,那你是否能够比较流利地把它的相关信息都说出来,这个相关信息包括:它经常用在那些方面,它的原理是什么,它的好处是什么,你的项目中那些地方用到了它,它的核心类或核心方法、核心继承关系,你是否能够表达清楚。
利我原则:
要尽量把局面或问题拉到对自己有利的这方面走,若某些东西你不会,那你是不是懂一些类似的技术,然后用合适的词语把它扭转过来了,这样就把局势拉到从对自己不利的方面到对自己有利的方面。
业务场景带入原则:
面试官需要的是能干实事的人才,所以如何证明你能干事,如何证明你干过实事呢。
在这之前,我们需要明白除了笔试题,面试官在面试你的时候都是拿着你的项目简历说话,
而简历上的项目都是我们必须要掌握的,所以将我们所掌握的技术融入到具体的场景中说得
有头有尾,我想,面试官是没有办法挑出问题的。
案例分析:
(1)面试官问:你这里用了Redis,为什么不用Memcahe。
结合流程原则:讲明Redis是什么,用来干什么,怎么干。
结合利我原则和对比原则:简单描述Memcache,然后立马过渡到自己所熟悉的Redis。
结合扩展原则:你可以想到Redis是不是相当于一种缓存,缓存机制是什么,它可以模拟哪 些数据结构,如何实现的,Redis的应用场景有哪些,与Java如何整合,与 Mysql如何整合。
结合业务原则:你可以说,所以我们这里选了它,主要是因为它什么。
(2)面试官问:你在这里为什么要选Nginx呢,有必要吗?
结合流程原则:Nginx是什么,用来干什么,怎么干。
结合扩展原则:Nginx有哪些好处,有哪些集成搭建。
结合业务场景:我们的项目中,例如文件服务器,分布式系统部署(Zookeeper+Dubbo),Session共享,SSO单点登录等。
(3)面试官问:如何搭建SSM框架?
结合流程原则:你解释SSM是干什么的、怎么干、如何干。
结合扩展原则:SpringMVC的核心是什么,Spring主要是干什么的,MyBatis是干什么的,怎么干。
结合对比原则:若你对自己十分有信心的话,不妨把SSM与SSH做个对比,若你是个十分强大的人,也不妨将常用的面试题自觉的结合起来,例如Hibernate与MyBatis的对比。
若你足够强大,也不妨介绍一些流行的快速开发开源框架:Jeesite、JFinal。
(4)面试官可能让你做个选择:一般情况下你会选择Hibernate还是MyBatis?
虽然目前MyBatis以其快速上手,简单,但是也不能肯定跟面试官说自己会选择MyBatis。
一定要结合以上的一些面试原则,理性地回答问题,我们程序员是个理性的生物,在工作上几乎不能感性。
(5)面试官问:Dubbo+Zookeeper在项目中扮演怎样的角色。
结合流程原则:弄清楚Dubbo只是一个服务中介,Zookeeper是个服务注册地,由此可以用一些比较高大上的词语来形容它们的组合:SOA思想、RPC架构。
结合扩展原则:联系一下目前特别火的Spring Boot和Spring Cloud微服务架构,这些在简历上没有,也就是说你没有实际操作过,但是你能够知道它们在什么地方用,是干什么的,而且是自己结合场景主动说出来的,不由得给面试官一种“爱研究,爱学习新兴技术”的好程序员形象。
……
考题答案
由于本次分享是职场的面试准备,所以具体的面试题目,文章中已经写得很详细了,答案网上也有,但是网上的答案往往长篇大论,若大家想简单、快速地掌握一个知识点的WWH,可以私下聊我,或者跟Chat约好,我把答案整理成文章故事再发给大家。
GitChat分享:
深入理解 MySQL 底层实现
转载请联系GitChat。