作者:Nooobster
    链接:https://www.nowcoder.com/discuss/717201?source_id=discuss_experience_nctrack&channel=-1
    来源:牛客网

    8.25更新,接到hr电话约二面。。这也能过。。
    8.8笔试3.4/5,上海到店被刷简历,很快被北京的优选捞了。

    一面 8.23下午
    面试官是个南方口音的大佬,这次简直被问傻了。结合之前牛客上看的优选大数据面经,一度感觉我被针对了。面试官要问某一块内容之前会先问我了解哪些,然后就针对这些问直到我说不上来然后说:好,这块先跳过,所以全程就是一路跳过,本菜鸡会的那点基本被扒光。。
    大数据项目是网上跟着做的,无实习。

    自我介绍。聊了一下非科班读研之前的工作经历。
    数据结构了解哪些(开始说了数组链表栈队列那些,后来反应过来说了Java集合包括JUC提供的那些)。
    那先说一下 ArrayList主要的成员变量、常用方法。说一下扩容机制。
    说一下 HashMap 底层,这里扩容条件记错,被挑出来了。
    HashMap put get 等操作理想的时间复杂度是多少,回答 O(1),那为了达到O(1) hashmap做了哪些优化? 回答了一些减少hash碰撞的因素包括调节负载因子啥的,不太满意,让我从设计者的角度说。
    既然提到hash碰撞,hash值如何计算的?如果key不是基本类型或string类型而是个对象呢?怎么重写hashcode()方法?如果key是个集合呢?
    hashmap为什么线程不安全?提到了1.7之前的头插法,追问了句头插法为什么会导致死循环过程了解吗。尾插法相对于头插法有什么优势?那为什么之前一直使用头插法?
    ConcurrentHashMap 如何保证线程安全的?
    HashTable 了解吗?
    那对比一下 ConcurrentHashMap 和 HashTable,为什么前者性能更好,只回答了锁粒度和get不加锁两方面,被追问,不会。那这两个分别用在什么场景?
    并发编程了解哪些? 互斥锁、线程池、阻塞队列啥的都了解一些。说了一下线程池参数被打断。
    聊一下互斥锁,这里说了Reentrantlock,公平锁和非公平锁,底层是sync实现的AQS。
    讲一下AQS,以非公平锁为例,让说一下A,B,C三个线程请求资源到释放资源这个过程AQS都发生了啥。状态啥的都记不太清了,靠脑补。中间说了句非公平锁的线程会先通过CAS尝试获取资源,问比较并交换判断的是什么,没答上来。
    阻塞队列了解吗?会一点点。如果线程池阻塞队列的大小设置的很小,是用于什么样的场景?不会。会用阻塞队列写生产消费模型吗?一会儿写一下。
    讲一下你的实时数仓项目(数仓项目做了离线和实时两部分)。
    讲项目提到用了HBase,问HBase表怎么设计的,包括rowkey设计和region分配,我说项目里HBase保存数据比较小,没有考虑这些,rowkey只是单纯用户ID。继续追问rowkey出现热点问题怎么解决,回答加盐和加反转时间戳。
    Flink了解多少?
    解释一下啥叫背压,Flink的这个阻塞值怎么算的,不会,推测了一下,然后被跳过。
    Flink的checkpoint机制,分布式快照,barrier。
    大数据开发的话你更想做哪部分?想做实时计算多一点。
    写刚才提到的 阻塞队列实现生产消费模型。这个没写过,写的很烂。
    还有哪些你觉得比较熟悉又没有聊到的方面吗?回答说大数据相关技术准备的更多一些,但是也没有您说的有深入理解或实践。。我怕了。
    反问,提到之前面试问大数据相关的更多,这次Java基础问的太深了没有料到,暗示这次被问傻了。说是个人风格,。。
    感觉凉了,也没问业务,结束。。
    各个话题基本上是我答不上来为止。。自身缺陷暴露无遗。继续卷起来吧。