程序员面试攻略之基础技术题准备秘籍

Posted 程序视界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员面试攻略之基础技术题准备秘籍相关的知识,希望对你有一定的参考价值。


“有问有答”栏目,是程序视界提供的免费咨询入口。想参与,可以这样:


  1. 发邮件给 foruok@163.com,标题注明“有问有答”。

  2. 描述你的困惑或者问题。


我每周会慎重回答一个问题并整理成文章,周四发布在订阅号程序视界内。


如果觉得这种方式较为麻烦,或者你的问题较为复杂,可以使用“在行”小程序,搜索“安晓辉,付费约我一对一咨询。

安老师,你好:


在面试面谈过程中,总是会被问到一些基础性问题。如Java面试经常会问到下面这类基础问题:


能否谈一下,悲观锁和乐观锁?

能否谈一下,线程池?

能否谈一下,hibernate二级缓存?

hashmap?

……


Hibernate、线程池等这些基础知识,以前培训、看书的时候都学习过,在学习的过程中也写过demo,当时感觉也理解、记住了,但是,面试的时候,问到这方面问题,还是说不清楚、答不好,有些细节方面的地方忘记了。面试的时候,有些基础题也能回答,但面试官再往深层次的追问几个问题,就答不上来了。


在准备面试的时候,这类基础性的问题还非常的多,网上就有些牛人收集几千道题(Java面试题1000道),还附有答案。

但个人感觉仅仅看懂、背会这些题目的答案是肯定不够的,这经不起面试官的追问。可如果一个个题目深入下去研究、去理解原理,上千道题目这样的数量,又会让我感觉到时间不够用。


我想问:在面试的时候,怎么高效准备这类基础性问题?

很遗憾,基础知识类问题的准备,我不知道有什么轻松、快速、高效的法子,如果你找到了,回头来告诉我啊。

我接下来说的,都不轻松,可能阅读过程中感觉会没那么舒服,但这些策略,都是行之有效的,愿意挑战的话,就做好准备开始吧。

1、结硬寨打呆仗

基础概念性的问题,往往是有参考答案的,有对错的。比如面试官问你“哪些容器是线程安全的”、“final在Java中有什么用”,答案基本就是固定的。

这一类问题,和我们上学时复习考试,道理差不多,想要很好的答出来,最基本的方法,是下面这些:

  1. 复习知识点
  2. 看面试题解析
  3. 刷笔试题

这些是笨功夫、硬功夫,跳不过去的,得扎扎实实做。这就好比考试,学期开始学的东西,期末时,肯定要走一遍复习流程,用各种方式反复理解、记忆。

2、三大策略提升准备效率

当然准备基础概念题目时也有一些优化策略,比如:

  • 80/20法则
  • 关联记忆
  • 互动演练

80/20法则用在这里,意思是,挑出最常被问到的那些题目,花更多功夫去记忆、练习、问答演练。比如你可能看到了1000多道题,但实际上只有200道经常被问道。

关联记忆,意思是,把不常用的知识点和你经常用的知识点,想办法关联起来,以熟悉来索引陌生。比如,你用过HashMap,HashMap是非线程安全的,那从这个点出发,就有两种关联方法,1)非线程安全的容器还有哪些,就可以找到WeakHashMap、TreeMap等等,2)线程安全的容器有哪些,就可以找到HashTable、Vector、ConcurrentHashSet等。

一旦知识点彼此之间关联起来,记忆就会很快,复习也很快,因为牵一发就可以动全身,从任意一个熟悉的知识点出发,就可以拎出一串来。

互动演练,指的是找个人向你提问,彼此来回问答。这种方式有两个好处,一是与面试场景像,可以练场感;另一个是演练对手熟悉的知识点和你不一样,他问的点和顺序,往往和你预期的也不一样,这样就能打通那些你因为不熟悉而下意识回避的知识点。

3、深入一层关注如何应用

知识类问题,面试时常会遇到两个层面的提问:

  • 某某是什么,比如悲观锁是什么、乐观锁是什么
  • 某某的应用,比如什么场景下用悲观锁,具体怎么用,举个例子

所以你单单记忆知识点,还不够,还要考虑这个知识点在项目中的应用,问问自己下列问题:

  • 它是怎么用的

  • 为什么这么用

  • 为什么不那么用

  • 用了之后有什么效果


对于那些你经常在项目中用的知识点,“应用”这个环节,你按上面的问题清单回顾一下,反思一下就能心中有数。

对于你仅仅知道但很少在项目中用的知识点,除了按照书上或者别人总结的应用经验了解外,也可以挑常被面试官提到的知识点做做小练习,然后再结合上面的问题清单反思它是怎么用的。

4、你的付出必定是值得的

求职找工作是大事,对你的职业发展、经济收入、生活状态,都有非常非常大的影响。这么重大的事情,值得认真对待,值得投入时间和精力。

假如时间不够用,是有方法可以挤一挤的,比如早上早起1个小时,下班路上看看、听听,晚上吃饭快一点,少刷会手机……

想想看,要是你努力准备了两个月,获得了理想的Offer,进入了一直想去的公司,月薪增加了50%,是什么感觉?

那时你一定会感谢你现在的付出,你会觉得,一切都是值得的。

退一万步讲,就算你这次为这家公司的准备,没能收到效果,但你的付出,让你巩固了的知识、结构化了体系,也是值得的。同时,你这次准备的基础知识,面试下一家公司,也很可能用得上,努力并不会白费。

你看,无论如何,你的付出,都是值得的。请相信,你在今天所有的投入,就是你深埋地下的一粒粒种子,时候到了,它们必将发芽,生长,与你一起绽放。


活动预告


我的新书《副业赚钱之道:从0到1打造多元化收入》经历各种波折,终于开始印刷了,预计双12会上市销售。书的内容围绕如何寻找副业方向、如何规划、如何持续行动展开,不谈捷径,提供思维、方法和工具,帮助你扎扎实实付出努力打造可以赚钱的副业。

为了更好的把副业实践落地,我准备建立一个《副业赚钱之道》共读讨论群,这样大家一起碰撞,砥砺前行,更容易有成果。

想要入群的小伙伴:
  • 图书上市后我会通知购买(第一批是签名版哦),发送订单和手持图书照片(不用自拍,只露手和书即可)

  • 进正式的共读群,随时讨论


买一本书,链接作者,链接一群有能量的人,获得无限次提问和讨论机会,来吗?

以上是关于程序员面试攻略之基础技术题准备秘籍的主要内容,如果未能解决你的问题,请参考以下文章

如何面试 iOS 工程师?

面试准备之【数据结构】1——图

真香!在Github一夜爆火的面试题库,程序员的福利!

尚硅谷全套课件整理:Java前端大数据安卓面试题

美国大数据工程师面试攻略

程序员面试基础技术题,怎么能快速记住那么多概念?