教你如何回答技术面试题,面试不再是难题 - Go语言中文社区

教你如何回答技术面试题,面试不再是难题


三、四月份,春回大地,万物复苏(请自带赵忠祥老师的BGM),又到了不少同学的跳槽时节。

最近一段时间团队也在招人,这期间筛选了不少简历,面试了一些候选人。这里谈谈我自己的对「 怎样回答面试题 」的理解。

欢迎各位各位老司机,新司机一起留言交流 ,我们一起探讨下,无论做为「面试官」,或者是「求职者」,怎样回答面试题,能更好的去解答问题,达成自己求职的目标。

一、听清题,勿抢答

面试,首先也是一个人与人交流沟通的过程。有些时候,面试官还没说完问题,面试者就会打断说「这个问题我知道...」。打断不利于沟通,同时,这样其实导致面试题没听清。比如面试题是「如何理解Java 的 JMM,...」后面还没说的时候,面试者打断说「你说的这个我会。。。,包括方法区,堆,栈 balabala」这就答的都跑偏了。

二、从全局、到具体

如果问题是「 Spring 是什么,怎样理解的」。很多人就会直接回答「Ioc 和 Aop嘛」这样说不能算错,但我个人认为从一个更宏观的方式先入手,再具体介绍对于 Spring 你深入了解的一个或者多个方面,这样感觉更好一些。

发展到今天,Spring 并不仅仅只有Ioc 和Aop,而是一个包含一系列功能的XX,像快速开发的Spring Boot, 像微服务支持的 Spring Cloud, 像支持认证和鉴权的 Spring Security, 支持各种抽象的Spring data 提供的 xxxTemplate,Testing, 以及现在使用众多的 Spring MVC。当然 Denpendency Injection 和 AOP 依然是核心。

再比如回答如何理解Java的垃圾回收机制,比起直接回答 「将无用的对象清除出内存」这类概括,如果描述垃圾回收,什么时候会发生垃圾回收,具体的回收方式,了解哪些回收算法。出现OOM时如何调整,以及 JVM 的内存划分等,我感觉效果会好很多。

三、不要骄傲自负,也不妄自菲薄

面试官在提问之后,有的候选人问题还没听完,一是抢答,二是不屑。心想为啥问这么简单的问题。其实面试大家都理解为一个不断沟通,发现面试者长项的「 交流 」。比如有的面试者一听「请写一个单例模式」时,会略有不爽,仿佛才华被埋没了,却在「双重锁检查」时,大意失手,忽略了CPU 指令重排序的影响。

还有的面试者,在面试官刚说出「接下来我们写一个算法题...」还没说完时,会抛出选项,「要不我写个快排,二分查找?balabala」,如果你是面试官,你会怎么做?

也有一些面试者,在被问到简历中所写项目时,「眼神黯淡」,说道「我们没做什么有技术含量的,和你们没法比」,又或者在面试官说到项目中的某个实现时,会说「你们也用了啊」,然后有的不敢向下说,仿佛简历包装过度,也有的则是感觉有更多的共同话题,开始探讨实现,选型等等。所以大胆展现自己,至少有一次机会。

四、简历切勿太夸张,更不要全是产品描述

看过不少简历,有些整个简历里的项目,全是业务和产品介绍,通篇没提到几个技术点,不讲实现,不写用了什么技术,全是大段的文字描述。做为一个技术面试,没有什么技术性。

也有不少,简历里写着精通XX技术与YY框架,是ZZ专家。其实实际交流时,真的是只限使用,都没配置过。

一个「 熟悉 」的大部分时候会大于一个「 精通 」的水平。

五、广度与深度

如果想学习Java性能优化,工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加下171662117群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

一般的面试,都会根据面试者的实际工作经验时长,对应到该有的广度与深度。但广与深两者间,我认为先深入一个领域,一个概念,再拓展开来,这样效果更好。

而且面试过程中,如果每问到一个话题,都是平常,或者是简单了解过,会给人一种浅尝辄止的感觉。如果某个方面深入,在回答相应的问题时得心应手,甚至可以回答「你最擅长什么?」时,可以更有底气。比如聊 Java 的并发 。除了能描述 sync 之外,先按从全局到具体,可以描述「内存模型」,以及Happens Before, Lock 与 sync 的区别。Lock 与 sync 分别对应的实现,以及JVM 的 monitor 指令, AQS ...

去年电话面试一个实习生,对于开发框架还在自学阶段,问到一些未学习到的部分,会实话说「目前还没学到」,甚至精确到说XX技术「今天就要学了」,有计划,有学习能力。但其描述的这种学习方法,态度 以及对已经学习部分的掌握程度与理解,对应表现出来的水平,都让人印象深刻。后来到公司实习时并没使用框架,而是根据需求使用了新技术,果然也没让人失望。

六、积极主动

这个我自己理解是在回答问题时,可以将自己擅长的展示出来。比如简历里有写到「项目使用过 RPC」,那在回答项目中如何使用RPC的时候,可以描述一些 RPC框架的设计实现思路,例如「我大致了解过 Dubbo 是这样设计的」,和 「Thrift 有这些区别」,当然,这个时候面试官可能会问,有了解过 grpc么? 你会怎么办?

此外,在讲述项目使用技术时,可以顺便将自己为什么这样做,为了什么选择使用这个技术,这样简历之外的丰富信息,才会让面试官更立体的了解,从而为「 交流 」打开局面。

七、有证明更佳

如果能在简历里附上一个长期活跃的开源项目,不断输出的Blog 等等,也是一个让人更全面了解你代码风格,展现设计、思想的方式,学习方式的「平台」。

不多说了,工头喊我去搬砖了, ; )

说到最后给大家免费分享一波福利吧!我自己收集了一些Java资料,里面就包涵了一些BAT面试资料,以及一些 Java 高并发、分布式、微服务、高性能、源码分析、JVM等技术资料

感兴趣的请加Java群:171662117,可以免费来群里下载Java资料

对Java技术,架构技术感兴趣的同学,欢迎加群,一起学习,相互讨论。

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/bea586bba09e
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:36:07
  • 阅读 ( 1128 )
  • 分类:面试题

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢