钉钉二面+三面+京东数科一面(附Java复习资料)
前言
  首先恬不知耻的放上我的博客,这是我近期总结的所有知识https://blog.csdn.net/aaahxz  
    JUC这块下了很大的功夫,希望能帮到大家!如有错误请提出我做更正(认真脸)! 
   本人为双非学校本科生,因为对技术特别热爱,加上有老师带队做开发, 
   可以说有一丢丢技术的技术水平吧,所以三面和面试官聊得还算可以 
   哈哈哈咱也是大三的学生,我看怎么评论走向把我喊老了呢😅  
 钉钉二面
  二面就是码代码了,考一下基本的算法 
   1. 判断链表是不是回文链表 
   2. 数组子数组最大的和 
   还是蛮简单的,阿里嘛,主要挖源码多一些 
 钉钉三面
  三面如期而至,大概隔了一两天 
   首先,怼项目。前面也有所提到,我一直在学校跟着老师做开发 
   项目经历还是比较丰富的 
   就提了一个简历里没有写的项目,因为用到了nginx集群+tomcat集群+redis集群等也算得上是半个分布式项目吧 
   主要是讲述了如何抵抗高并发的实际处理手段:MySQL主从复制搭建好然后用mycat做读写分离 
   还有一些优化手段:页面静态华、缓存技术、集群间的负载均衡 
   最主要聊到了我的秒杀系统那里:主要涉及到Redis的预减库存这一部 
   第一要保证原子性,第二要保证处理速度 
   Redis采用I/O多路复用,即可以并发接受网络请求,而且一个网络请求控制为一个机器指令 
   假如不能满足当前需求的话,还可以用LUA脚本,期间还提到了Redis事务,感兴趣的可以去了解一下,和MySQL的事务是不一样的 
   然后聊了聊Redis集群和Redis cluster的相关特点  
   为什么哈希槽是2^14个,以及哈希一致性(Redis集群)和哈希槽()的区别  
   然后就开始问了:你对未来的打算,之类的,最后面试官说后续会有其他的的面试环节,希望我顺利加入阿里 
   =======================================分割线========================================== 
   3.24 补充:后来想想,面试过的原因大概是因为我在学校的创业经历可能和钉钉比较相符,因为丁丁也是内部创业的产物 
   和面试官大概聊了十多分钟这些经历,创业的坚信可能只有经历过才懂,所以也能获取大老板相应多一些的认可吧 
   人生啊~没有白走的路 
 后续:
  我不是什么大佬,只不过是喜欢总结一些东西~ 
   由于今年    情况有变 
   加了一个笔试,本来觉得稳的,现在变得缥缈起来,无奈自己没有准备笔试,答得一团糟 简历一直处于评估状态 不给面试的机会 唉! 
   人生总是处处充满惊喜! 
 补充:
  陆续有小伙伴私信我说分布式的架构如何如何,其实短期内的话,学好分布式还是挺难的,因为每一步都可以揉碎了讲 
   我先贴个图吧,不知道从哪里站来的,反正项目如果做到这个程度,可以说是很牛了,尤其是本科生阶段 
   分布式也好,微服务也罢,个人认为都是将模块拆分,例如商城系统可以有会员系统、商城首页、商品详情、热点数据这些 
   单机扛这些高QPS肯定是不行的,所以要进行拆分,如何将拆分的单个模块进行调用,这时候就得dubbo登场了,在zookpeer注册,dubbo进行远程调用这些 
   往下就有什么SSO(单点登录啦)、各种服务、甚至分布式锁(Redis可以用sentx,不知道拼的对不对)这些 
   体量更大的话还可以用消息队列(削峰、异步、解耦)、再往下就是缓存、DB层了,搜索方面可以用ElasticSearch来进行大规模数据的检索, 
   缓存搭建redis集群或者Redis-cluster的方式、DB用中间件mycat、先做好主从复制、在做读写分离,具体其他优化还有一些CDN啊,nginx方向代理啊、页面缓存啊这些 
   至于dubbo和SpringCloud的区别以及为什么选择dubbo,感兴趣的同学可以去搜搜嘛,这里就不细说了 
   大概的思路就是这些,要学的还是蛮多的,我是菜鸡、大佬轻喷 
   也不一定要回这些,但话说回来,技术永无止境吗,基础扎实实习生就没问题了,但是想让自己的竞争力变得更加强,多学点总没坏处 
   前提是对这个行业很感兴趣 
 京东数科一面
  时间有点久远能记得起来的不多了 
   基本上还是JUC这一块,数据库的事务、隔离级别、RR级别的运行原理,左右连接 
   常见的集合collection和collections的区别 
   list和set区别,以及各自的子类 
   Hashmap,问到死,幸亏这块掌握的还算熟练,居然问到了问什么要无符号右移16位(减少哈希碰撞)、为什么不能用B+树等等 
   ConcurrentHashMap问细节put的过程:先判断,为空则CAS***去,若数组正在扩容则帮他一起扩容,不为空则锁住头结点巴拉巴拉 
   start、run的区别,线程状态,操作系统级别的 
   线程池,核心参数,怼细节,阻塞队列如何如何,两种常见阻塞队列有何不同,主要是线程池工作原理 
 开放型题目:如何将任意对象输入转化为Json格式输出
很简单,内省或者反射,其实内省也是基于反射的啦就是ClassForName那些
  因为我暑假才能去实习,然后内推人叫我好好学学dubbo、SpringCloud这块 
   因为内推人是我老师的哥们的原因,还是个leader,emmm应该差不多 
 总之好好准备啦,希望大家上岸!
  
 
查看13道真题和解析