A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 wizong 于 2016-6-25 00:18 编辑

起源

自己经历过的面试也不少了,互联网的、外企的,都有。总结一下这些面试的经验,发现面试官问的问题其实不外乎几个大类,玩不出太多新鲜玩意的。细细想来,面试官拥有以下七种武器。恰似古龙先生笔下的武侠世界中的七种武器。下面我为各位一一道来。


长生剑=语言基础


长生剑是七种武器之首,同理,编程语言的考察也是技术面试中最基本的。这条不满足的就直接Pass了。以Java为例,语言的考察大致可以分为三个层次:


初级:语法考察,也就是该语言本身的使用层面。

这个层次的考察会考察一些语言的基本语法,对于这个层次的考察要做到对于每一个细节都熟练掌握。 考察的形式可以是问你某一段代码是否能成功编译,或者会输出什么结果,也可以是让你说一些不同关键字的不同含义、某一个关键字都可以有哪些用法,等等。Java常见问题:

Inner Class, Static Nested Class的使用;

final finally finalized关键字的区别;

volatile\sychronized关键字的使用(Java开发往往是服务器端开发,所以并发相关的关键字要重点掌握);

static关键字都有哪些使用场景(说出static block及格,说出import static会加分)。


中级:库或框架的使用。或者说是该语言的技术栈的使用层面。

库的使用:

也就是该语言的标准库的使用。以Java为例,会问你一些关于jdk中常见的framework,比如IO、 Collection、juc并发框架等,以及concurrentHashMap的实现原理等等。尤其要注意的是HashMap和ConcurrentHashMap的实现原理是面试官最喜欢攻击的技术点之一,一定要好好掌握。同时,因为是Java开发往往是服务器端的,juc包也是要重点掌握的。 除此之外还有一些重要的规范,比如JDBC、servlet,等等。

框架的使用:

以Java为例,Spring SpringMVC和MyBatis(Hibernate)这些框架的使用、原理都要掌握。对于Spring来说,要重点掌握IOC和AOP的实现原理,其中AOP要知道动态Proxy和CGLIB两种实现方式。对于ORM框架,要重点掌握MyBatis和Hibernate的实现原理和不同点。

高级:语言的底层实现。或者说是该语言的设计思想层面。

以Java为例,因为Java是以JVM为基础的,会问一些关于JVM的问题,比如JVM的运行时内存区域,JVM内存模型,GC机制,JVM的性能调优,类加载机制等等。另外需要掌握JIT等技术,以及为什么Oracle的Java虚拟机叫做HotSpot?

还有就是对一种语言的历史最好有一个大概了解,以Java为例,需要了解Java每个大版本都有哪些重大更新,等等。




40 个回复

倒序浏览
本帖最后由 wizong 于 2016-6-25 00:26 编辑

碧玉刀=手写code

刀和剑是武林中人最基本的武器。对于面试官而言,语言考察和手写code题也是最基本的考察。道理很简单,编程语言和手写code是coder最重要的基本功。跟编程语言一样,这部分通不过的话,面试直接Pass。同时,这一部分也是“talk is cheap, show me the code”的最好体现,杜绝夸夸其谈的“水货”。


手写Code题可以分为下面三类:

1. 算法题。

最基本的算法题一般是排序,查找等,常见的有二分查找,快排等。一定要熟练掌握。这些题在各类公司的考察中都有可能出现。

中等难度的算法题一般会是动态规划算法(DP)的题,比如菲波那切数列问题及其常见变种。DP的题的关键点在于首先找出问题的递归解法,然后使用自顶向下或者自底向上的方法,消除递归过程中的重复状态,降低时间复杂度。

其实,就算是MS Amozon这种以考察算法著称的公司,基本上算法题的难度也很少超越DP这种中等难度的题。因为毕竟不是搞ACM。

2. 数据结构题。

最基本的数据结构题一般是针对链表这样的题目,比如单链表的反转、判断单链表是否相交,等等。

中等难度的题目一般是针对二叉树这样的题目。反转二叉树、二叉树的层级遍历,等等。值得注意的是,二叉树的题目可以考察的内涵其实非常广泛。比如经典的LCS最近公共祖先题目,其实解决的思路就非常考验解决问题的能力:把问题break down,再各个击破。

高级的数据结构题一般是B树,图这样的数据结构。一般这样的题很少考到。

因为算法与数据结构是密不可分的,因此往往把它们合并为同一类,统称为算法题,但其实二者还是有区别的。

3. 针对特定领域的手写code题了。比如手写JDBC的查询实现,手写生产者消费者原型,手写单例模式,等等。


最后,还有一点要注意,手写code题有个特点:你给出一种写法,面试官往往会追问你有没有更优的写法?如果题目修改一些前提条件该怎么办?因此,对于这一类问题,在平常的学习积累中一定要注意学会举一反三。

回复 使用道具 举报
本帖最后由 wizong 于 2016-6-25 00:24 编辑

多情环=Java开发中的其他环节


这部分内容比较多,而且而且这些技术环节与Java开发都有着环环相扣的关系。这些环节主要有: Linux shell编程或者Python脚本编程,在服务器运维中会使用;SQL关系数据库;HTTP TCP网络协议;反向代理,分布式缓存,等等。 下面按照客户端数据的流入先后,介绍几个比较重要的环节。

1 Nignx、Tomcat、 Apache、Jetty 等Web服务器

Nignx可以作为反向代理,所以位于整个服务器系统的最前端。Tomcat或者Apache可以负责转发请求给应用服务器。Jetty可以在分布式集群中帮助服务器间通讯。

需要掌握Nignx与Apache的原理及不同、Jetty的原理,等等。

2 线程池、NIO框架等

需要掌握Java处理高并发的原理(线程),并了解其他常见方式,如Node.js的基于event的方式,以及Python GoLang的协程方式,等等。

由于应用服务器的性能瓶颈往往在IO上,所以还需要掌握Java常见的NIO框架如Netty等。

3消息中间件及分布式框架

需要熟悉常见的消息中间件比如Kafka,以及常见分布式框架ZooKeeper等,如果研究过源码就更好啦。

4 缓存

缓存是应用服务器(集群)与数据服务器之间的桥梁。常见的有MemCacheD和Redis。需要掌握的常见问题有MemCacheD与Redis的原理,它们的不同,Redis持久化方式,一致性Hash等。

5 数据

5.1 关系数据库

需要掌握常用SQL语句,常见的SQL性能调优方法等。需要注意的是关系数据库也可以做分布式哦,也就是单表超过百万记录后的分库分表,等等。

5.2 NoSQL

最好能掌握些Hadoop、Spark的知识,为将来转型为数据工程师做准备。。

6 脚本及JVM监控

终于说到运维阶段了。。 在日常运维中,需要至少掌握Shell或Python脚本,Shell要重点掌握awk,以及一些常见的性能监控命令。常见的题目会让你写一段处理日志的awk脚本,或者问你一些ps iostat netstat vmstat之类的命令如何使用,等。JVM监控主要是如何获得java core和heap dump,以及如何分析他们,另外一些简单监控命令如jstack和jmap jhat等也要了解。


关键点:

这部分内容往往会结合你的项目经验来问。一定注意要诚实回答,不要夸大自己在项目中的作用,不然面试官会认为你在弄虚作假,很不诚实。如果这样的话,你就死定了!






回复 使用道具 举报

孔雀翔 =设计模式

孔雀翎,每一片都是那么美丽。设计模式也是一样,每一种设计模式都蕴含着设计之美。在经典的23种设计模式中,能说出10种以上的模式及其思想,就算及格。

在这里,列举一下需要掌握的几种模式:

创建类:

单例(线程安全的单例?在Java中双重检查加锁为什么会失效?),工厂方法,抽象工厂(工厂方法与抽象工厂的区别?),Builder。

结构类:

Adapter适配器,代理模式Proxy, 装饰器模式(在Java IO Framwork中的体现?),外观模式。

行为类:

观察者,状态模式(state),模板方法,策略模式,责任链模式(在Jetty中的体现?)。


设计模式在互联网企业的面试中出现的比较少,一般只需要重点掌握单例模式即可。至于其他模式,能说出他们在jdk或者其他重要开源框架中的使用即可。


另外,除了23种经典设计模式,最好还能掌握比如多例,对象池(object pool)这样的更为现代的设计模式。



回复 使用道具 举报
本帖最后由 wizong 于 2016-6-25 09:18 编辑

离别钩=HR面


离别钩是七种武器的最后一种。同理,HR面试也是面试的最后一个环节。

考察内容:

HR会考察你的技术之外的其他素质,比如性格,是否能融入公司,是否能认同企业文化,与人的沟通交流会不会有问题,以及面对困难的应对等等。

该问的和不该问的:

千万不要以为到了这一步就可以放心和HR谈价了。。。 所以薪资这块最好少问。同时需要注意的是,比如加班之类的最好少问,可以等拿到offer再问,

应该问一些企业文化方面的东西,这样可以加分不少。

回复 使用道具 举报

第七种武器?


第七种武器是什么? 水:“哦?” 车:“没有武器!” 水:“没有?” 车:“没有,没有武器就是有武器,有武器就是没有武器”

面试中的第七种武器是什么?眼缘!有时候面试官就是看你不爽。。所以,你跟这个职位就没有缘分啦,哈哈哈哈。。。。


写在最后

好了,面试官的七种武器就介绍完啦,如果大家有任何补充欢迎留言。最后祝愿大家都能熟知面试官的这些武器,做到知己知彼,百战不殆。顺利拿到自己心仪的offer!




回复 使用道具 举报
suming 中级黑马 2016-6-25 23:08:57
7#
谢谢分享啊
回复 使用道具 举报
大神总结的好!
回复 使用道具 举报
谢谢,看一看,瞧一瞧
回复 使用道具 举报
瞬间感觉自己啥也不会啊
回复 使用道具 举报
分享的不错~
回复 使用道具 举报
学到了套路
回复 使用道具 举报
谢谢分享!!
回复 使用道具 举报
点赞 ,感谢无私的奉献
回复 使用道具 举报
谢谢分享!!
回复 使用道具 举报
总结的好!!!
回复 使用道具 举报
谢谢分享,先收藏了
回复 使用道具 举报
正在打基础  看来要抓住
回复 使用道具 举报
赞~~~~~~~!!
回复 使用道具 举报
正在学习阶段,感觉总有用到的一天的,留着慢慢看
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马