2018年面试

Posted by 月光下的海 on October 24, 2018
  • 开始
    • 临近十一国庆节的时候,我办了离职手续。正好假期回家呆了几天,见了见一些好朋友。假期结束回北京后又休息了一周的时间。从两周前开始投简历找工作,中间也陆陆续续的面了几家公司(大概五六家),不是很多。到目前为止还没有合适的机会,所以借此总结一下面试过程遇到的一些问题。毕竟有总结才会有收获,才能成长和提高。

    • 最先接到的是一个阿里的电话,本来说是通知我准备一下最近几天的电话面试。结果后来说我之前已经投过他们公司了,系统中有我的信息,没法再把简历推荐过去了,遂放弃了。不清楚阿里是一个什么机制,好像半年内不能重复投?。。

    • 真正开始面的第一家是中国电信,是在西直门内大街的冠华大厦。过来了三个人面我,其中一个应该是团队的负责人。整个过程中他问的是比较多的,剩下两个较少一些。开始就是先自我介绍,说下之前的工作经历,以及工作中的职责。

中国电信
  • 因为之前的一个项目中负责的是配置中心这一部分,所以问到了是怎么做技术选型以及技术预研的,有没有对比过百度的disconf和携程的apollo有什么区别(当时项目中用的是apollo),二者有什么区别?
  • 说下dubbo和zookeeper,项目中是怎么用的,你是怎么理解的?
  • 一个service接口有两个实现类s1和s2,现在有两个controller c1和c2,怎么做到c1中注入s1,c2中注入s2。(就是想问按类型装配和按照名称装配)
  • vert.x是异步的,dao层操作数据库是同步的,项目中是怎么处理异步和同步的关系?
  • ElasticSearch了解吗?为什么快?底层原理?倒排索引?
  • redis好像提了一下,这个记不太清楚了。
  • 线程池了解吗?有哪些?各个之间的区别?线程池的参数?
  • NIO和BIO,Netty。
  • 说说最近在学习的一门技术。
  • 说说你在项目中遇到的问题以及是怎么解决的?
  • 你有什么想了解的,要问我的?(就大概问了问主要是做什么的,技术栈有哪些?)
一家创业公司,主要做人工智能方面的。
  • 先问了问平时什么语言写的多,我答的Java。Java是不是还是用spring那一套居多,我说是的。(好像并不关心用什么语言)
  • 出了两道数据结构的题。
    • ①用两个栈实现一个队列。
    • ②求一个给定数组中最大子组数的和。
58集团
  • 说下线程池?有哪几种,适用场景?有哪些参数?
  • HashMap1.8之前的实现原理?是否线程安全?有没有安全的?
  • 由第二个问题聊到ConcurrentHashMap,是怎么实现的?线程安全又是怎么保证的?1.8和1.8之前的区别?做了哪些优化?
  • 自己实现一个ArrayBlockingQuene
  • 说下你对可重入锁的理解以及实现原理。
  • jvm内存模型,垃圾回收算法,垃圾回收器,jvm参数调优
  • 说下dubbo都有哪些模块,画下图。
  • Linux怎么查看端口是否是占用,怎么截取一行日志的最后一个字符?
  • Java命令行怎么看jvm内存使用情况?
嘀嗒出行
  • 写一下归并排序。
  • Spring的AOP是怎么做的?用了什么设计模式?
  • 平时多线程用的多吗?说下线程池。
  • hashmap的get方法查找的时间复杂度?链表是否会影响查询效率?
  • 高并发场景下的性能优化?
  • 说说bio和nio
易车
  • 说下你觉得什么是好的编码规范?
  • 谈谈对设计模式的理解,知道哪些设计模式?
  • 说说Redis
  • SQL和NOSQL的区别
  • 知道iframe吗?说下。
  • 说说ajax。核心对象是什么?如果该对象不可用的情况下怎么办?
平安健康
  • 谈谈对zookeeper的理解,项目中是怎么用的。
  • 说说MySQL(事务,索引,引擎等等);什么时候不会用索引;有没有支持范围查找的索引;聚集索引了解吗?
  • spring的aop和ioc。spring有没有看过源码。
  • zookeeper的强一致性是怎么保证的?
  • 说下对redis的理解。多路复用技术,master slave的通信。
  • MySQL的高可用
  • mybatis和hibernate的区别?有没有看过mybatis的源码?
  • 平常怎么做性能测试?
  • varchar(25)和varchar(50)有什么区别?会有影响吗
  • 可重入锁和死锁的区别?
  • 说说什么叫自旋?它归为哪一类锁?
  • 能写shell和Python吗?
  • MySQL中的innodb和myisam引擎的区别?
  • 现在运行的有多个系统,怎么不让dao层和service层耦合?
  • ES的倒排索引。
总结
  • 总体来说,重点还是在Java中的多线程,并发以及锁这一块。数据库方面主要还是事务,MySQL的索引原理,实际使用场景,引擎等。框架方面就还是侧重Spring的居多。

  • 主要就这几家了,问题有的就比较模糊了,勉强记个大概。因为大多数都是一面,所以还是Java基础问的居多,项目可能别人并不太感兴趣,就问的比较少。问题看上去问的都比较少,也比较基础。但是很多时候都是一个很宽泛的话题,并不是某一个具体的问题给你。这个时候考虑很多的还是知识面的宽度和深度,怎么能让你自己掌握主动权,把问题引到你熟悉的范围中来。各个零碎知识点怎么能够在大脑中串起来,做到有料可说同时又显得并不牵强,避免非要把这些散件拼凑到一起的尴尬。

  • 暴露出来的问题

    • 基础有待夯实。有的也听说了解过,广度是有,但是深度不够。很多时候实际开发中没有遇到过,缺少实战经验,相对来说理解也就没有那么深刻。在以后的工作和学习中,还是要先精后广,让自己有一项非常熟悉的领域。

    • 项目经验不足。像一些高可用,分布式,性能优化或者一些思想、架构层面的思考,想法不多,不够成熟。

    • 有时还是会紧张,导致一些该回答上来的没有答好,或者是回答的太牵强。怎么说呢,这个慢慢克服吧。

    • 技术的提升或者是经验的积累,往往都是需要一个过程。学习没有捷径,必须一步一个脚印,踏踏实实的往前走。一天两天成为不了大牛,仰望星空,脚踏实地吧。

      2018年10月于燕郊