面试日记Day 3

面了两家互联网,第一家是做游戏,回答的不好一些问原理、底层的问题没答上来,第二家是做健身的其app端招后台。

简单记录一下还有映像题目:

第一家

笔试部分:

  • 有两题sql题,考察sql语句
  • 实现一个斐波那契的输出函数;
  • 实现一个用两个线程实现交替输出数字,如A线程输出1,接着B输出2,直到输出50;

面试部分:

  • HashMap的实现方式,内部原理,使用了哪些数据结构
  • 在使用hashMap时一般要重写类的哪些方法,为什么

重写equals和hashcode,面试官问为什么重写hashcode时要一并重写euqals,这里答的不好,正确回答查了下应该是:当两个对象 equals 比较为 true,那么 hashcode 值应当相等,反之亦然,因为当两个对象hashcode 值相等,但是 equals 比较为 false,那么在 HashMap 中会产生链表,影响查询性能。只重写hashcode不重写equals就会让hashMap里增加链表影响性能。

  • 遍历集合类时做删除操作是否安全,应该怎么做

这里回答的太失败了,知道是不安全,但需要怎么做居然卡壳了答不上来,应该是用迭代器删除。

  • ArrayList与LinkedList区别,是否为线程安全,要如何实现线程安全
  • springCloud有哪些组件
  • eureka作用是什么,怎么用的,怎么实现它的功能的

这里面试官不断的循序渐进,问题不断的深入,基础不扎实很容易被问倒。面试官的问题思路一般是这东西有什么用,怎么实现的,为什么这么用。例如我简历上写着某项目里有用Hbase存储文件,面试官就问我为什么拿hbase存,当时这是之前技术经理设计的方案,我只知道他们说过日后文件持续增长并之前有使用过,所以用hbase做分布式存储。但面试官问mysql也可以存文件,也可以做集群、分布式为什么不能用mysql存呢。这个问题之前并没有深究,对hbase也只是简单用过,所以根本答不上来。这次面试也是抱着试一试的心态,不通过也是情理中的,看来未来的学习之路任重而道远。

第二家

这家没有笔试,直接面试

  • jdk提供的线程池有哪些,实例化线程池时影响线程数量参数有哪些,参数意义是什么
  • 当设置线程核心线程数时,是否一初始化就会有这么多数量的线程
  • HashMap底层实现是什么,有到了哪些数据结构(总结下来面试都很喜欢问集合类的原理)
  • sql的查询优化怎么做(指mysql)
  • mysql的索引原理是什么
  • mysql的索引里面存的是什么

这个没研究所以一时答不上来,思索后回答索引存放着该字段哈希或者摘要转化后的序列值,面试官又问索引里面存放着什么,于是回答可能是数据的地址值如数据存放的硬盘地址。实际面试官应该是想考聚集索引和非聚集索引,聚集索引的话索引存放的是数据本身,非聚集索引存放的数据的地址值,索引非聚集索引需要查询索引拿到地址值后再去取数据,这也是MyISAM和InnoDB的一大区别。这个问的回答是勉强擦了边。

  • spring主要提供了哪些功能
  • spring AOP运用了哪些设计模式
  • springCloud的这种rpc框架实现基础是什么,还有了解过哪些rpc框架

回答:序列化与反序列化功能

  • JDK动态代理、CGLib字节码生成技术代理,两种代理技术的区别
  • 为什么jdk代理只能代理接口
  • 分表分库的情况下,怎么做有过滤条件、排序的分页查询且能更好的提高性能

因为我上家公司有用到过类似的分库的手段,将数据按时间顺序‘分库’存储在不同的Solr中,但看之前的代码处理是直接取所有数据,然后前端分页。既然面试官这么问了,肯定不能说前端分页这种暴力的手法,于是分析说最普通的方式是去所有库把数据捞出来分页返回,这是最耗费性能的方式,我们可以通过缓存的方式或者是个布隆过滤器,先命中缓存看命中的数据在哪些库中,再去数据库里取,减少直接取数据的次数。面试官又问还有其他方式么,想了一会回答暂时只能想到这些,面试官说没事,其实在第一次取出数据排序返回第一页时就可以知道剩下页数的数据存放的位置,根据这些位置直接取对应库中取。

大概就是这些问题,然后聊了一下之前的项目。接下来是一个技术负责人面试,就简单的聊了聊然后问你想知道什么,我就问了下该岗位的职责与工作内容。然后是HR面,聊了挺久的然后问了期望薪资然后加了微信说之后会通知结果。

这个面试官面试方式还是挺有趣的,很多问题我在第一时间并没有给出标准答案,但他会给个提示或者等我说出分析过程,引导我往他想要的那个方向,比那些直接问原理要结果的方式体验会好些。

之后到他们下班的点问HR结果如何,回答 :‘项目组还要考虑下’。emmm....因为今天是周五了,只能等下周结果了,今天是跑累了,回去休息~

等待几天后询问hr得知1-3年的岗位暂缓招聘了,不知道是不是真的。

接下来又面试了一段时间,大概花了一个月,最后入职了一个做聊天app的互联网公司。除去清明回家了一周,找工作一共花了3周时间,平均5次面试拿一个offer,面试过程中面试题目大同小异,一般先问java基础、框架使用原理,然后根据项目经历提问,一般问你用到的技术的用法、原理。有些面试还会考察一些简单算法,可能只有2年经验,面试官也没提一些特别难的算法题。感受就是大部分公司都希望你有高并发、大数据量、分布式的开发经验,也希望你有互联网相关、支付相关的经验,因为上家是企业级开发,这些都是欠缺的,接下来的工作中要好好积累相关知识、经验。面试真是一个随缘的过程,运气好遇到你了解的题目你可以和面试官侃侃而谈,不幸遇到盲点就有点尴尬了,所以面试也是个发现自己有哪些不足的好方式。最后也祝各位找工作的小伙伴可早日找到心仪的工作~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值