2018-08-08 杂谈

最近一段时间输出变少了,已经连续4个月没有在公众号写过东西了,非常惭愧。然而,最近的输入变多了,读了一本书:《必然》,作者凯文凯利;啃了一个极客时间技术专栏:《Java核心技术36讲》,作者杨晓峰。两者都是优秀的作品,表面看似不相关,却有两个重要的共同点:1. 内容丰富,不局限于表面,有深度 2. 注重逻辑,引人思考,有启发性。

例如,《必然》第一章,形成——Becoming,里面提到了互联网时代的黎明,无论你想做什么,都可以轻而易举地成为第一。做一个搜索引擎!做一个电商平台!做一个视频网站!行业早期蕴藏着巨大机会,而留个后来人的,似乎只有困难和苦涩。但是问题在于,仅就互联网而言,互联网仍处于开端的开端。假如我们前往30年以后,从那时的视角回顾现在,我们就会意识到,在2050年,大部分运转人类生活的伟大产品,在2016年都还没有被发明出来。所以真相就是:此时此刻,今天,就是最佳时机。今天确实是一片广袤的处女地。我们都在“形成”,这在人类历史上,是绝无仅有的最佳开始时期。

《必然》第二章,知化——Cognifying,没有什么比把迟钝的东西变得聪明更富有成效。在某个现有进程中植入极少量有效的智能都会将其效率提高到全新水平。近期的三大突破奖开启人们期待已久的智能时代:廉价的并行计算大数据更好的算法。由于进化过程中的一种巧合,我们成为漫游在这个星球上唯一拥有自我意识的物种,这让我们误以为人类的智能是独一无二的。然而他不是。在我们创建了越来越多的综合心智后,我们开始意识到人类思维并不通用,它只是思维的一种。今天不断涌现的人工智能的思维方式与人类不同,他们在完成诸如下国际象棋,开车,描述一张图片内容等我们曾认为只有人类能做的事情时,使用的方法也与我们不同。在一个联系超密集的世界中,不一样的思维是创新和财富的来源。

Java核心技术36讲中,每一篇文章围绕同一个主题,读者带着问题尝试思考后,可以阅读作者给出的参考答案。仅仅这样没意思的。这个专栏的重点在于,作者带着多年的行业积累和思考,在文章主体部分围绕主题进行知识扩展,深入浅出地进行分析,文末会再提出一道思考题。这种提问——分析——再提问的模式,给5星好评。

最近做了一段时间的面试官,面试了一些大数据工程师。简单聊聊这段时间的经验吧。

一般做技术面试次数多起来之后,面试官都会形成自己的套路。在套路之下,我在意的考察核心主要是几条:知识储备思维能力沟通能力

一名候选人,面试大数据研发工程师的岗位,有采用HBase做数据存储的经验。显然我会问,为什么要用HBase做数据存储?一名候选人,有Java后台开发经验,用过Spring,这种情况我会问,为什么要用Spring?

这都是标准的暖场式提问,有现成的套路回答,来面试人的多少都会准备点儿答案。而这种问题是自带体系的,根据候选人回答的点,又能进一步追问细节和原理。这种问题能有效区分出候选人的知识储备量思维能力。比如下面这段对话:

A: 为什么要用Spring?
B: Spring提供了控制反转(IoC)功能,有利于降低系统模块的耦合性。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象,也就是所谓的依赖注入。
A: 除了控制反转,还有其他理由说服我使用Spring吗?
B: Spring还提供了面向切面(AoP)编程功能,可以做到分离业务逻辑与系统级服务,例如权限控制、日志管理和事务管理,提高内聚性。
A: Spring是怎么实现的依赖注入?有几种依赖注入方式?
B: Spring通过Bean管理对象的依赖关系,主要有以下几种注入方式:一个是字段注入,通过注解@Resource或者@Autowired注入;一个是setter方法注入,比如Bean A依赖其他Bean B, 就可以在A定义一个私有成员变量B,配合接收B对象的setter方法,完成注入;一个是constructor注入,和setter注入类似,在A定义一个私有成员变量B,配合接收B对象的构造函数,完成注入;
A: Bean的生命周期和作用域
B: ...
A: 面向切面编程的自身设计和实现的细节
B: ...

如果是当面面试,可以让候选人在纸上画一画各部分的结构关系,或者在纸上写一小段代码,看看他是不是真的能落实自己说的内容。总之,面试主题是一个面,而问题是一个个点,提问者尽量由浅入深,沿着一条线提问内在关联性比较强的问题。这样下来,候选人知识储备的深度和广度,面试官心里已经有数了。

至于如何考察思维能力,可以多问开放设计问题,本文不展开谈了。如何考察沟通能力,也不展开谈了,以后有机会单独聊。

最后,如果你愿意对现在和未来展开思考,强烈建议阅读《必然》这本书,你会发现一片广阔的思维海洋。
如果在准备面试或者想修炼Java技术内功,强烈建议购买《Java核心技术36讲》,一定物超所值。

附录一、《必然》目录

  • 第1章 形 成 Becoming
  • 第2章 知 化 Cognifying
  • 第3章 流 动 Flowing
  • 第4章 屏 读 Screening
  • 第5章 使 用 Accessing
  • 第6章 共 享 Sharing
  • 第7章 过 滤 Filtering
  • 第8章 重 混 Remixing
  • 第9章 互 动 Interacting
  • 第10章 追 踪 Tracking
  • 第11章 提 问 Questioning
  • 第12章 开 始 Beginning

附录二、《Java核心技术36讲》目录

  • 第1讲 谈谈你对Java平台的理解?

  • 第2讲 Exception和Error有什么区别?

  • 第3讲 谈谈final、finally、 finalize有什么不同?

  • 第4讲 强引用、软引用、弱引用、幻象引用有什么区别?

  • 第5讲 String、StringBuffer、StringBuilder有什么区别?

  • 第6讲 动态代理是基于什么原理?

  • 第7讲 int和Integer有什么区别?

  • 第8讲 对比Vector、ArrayList、LinkedList有何区别?

  • 第9讲 对比Hashtable、HashMap、TreeMap有什么不同?

  • 第10讲 如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?

  • 第11讲 Java提供了哪些IO方式? NIO如何实现多路复用?

  • 第12讲 Java有几种文件拷贝方式?哪一种最高效?

  • 第13讲 谈谈接口和抽象类有什么区别?

  • 第14讲 谈谈你知道的设计模式?

  • 第15讲 synchronized和ReentrantLock有什么区别呢?

  • 第16讲 synchronized底层如何实现?什么是锁的升级、降级?

  • 第17讲 一个线程两次调用start()方法会出现什么情况?

  • 第18讲 什么情况下Java程序会产生死锁?如何定位、修复?

  • 第19讲 Java并发包提供了哪些并发工具类?

  • 第20讲 并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?

  • 第21讲 Java并发类库提供的线程池有哪几种? 分别有什么特点?

  • 第22讲 AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?

  • 第23讲 请介绍类加载过程,什么是双亲委派模型?

  • 第24讲 有哪些方法可以在运行时动态生成一个Java类?

  • 第25讲 谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError?

  • 第26讲 如何监控和诊断JVM堆内和堆外内存使用?

  • 第27讲 Java常见的垃圾收集器有哪些?

  • 第28讲 谈谈你的GC调优思路?

  • 第29讲 Java内存模型中的happen-before是什么?

  • 第30讲 Java程序运行在Docker等容器环境有哪些新问题?

  • 第31讲 你了解Java应用开发中的注入攻击吗?

  • 第32讲 如何写出安全的Java代码?

  • 第33讲 后台服务出现明显“变慢”,谈谈你的诊断思路?

  • 第34讲 有人说“Lambda能让Java程序慢30倍”,你怎么看?

  • 第35讲 JVM优化Java代码时都做了什么?

  • 第36讲 谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?

  • 第37讲 谈谈Spring Bean的生命周期和作用域?

  • 第38讲 对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?

  • 第39讲 谈谈常用的分布式ID的设计方案?Snowflake是否受冬令时切换影响?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值