头条一面二面面经

1. Java线程的状态
Runnable状态与操作系统中进程运行状态的关系
2. sleep和wait的区别
从资源层面来看,sleep占有哪些资源???
什么是锁?
3. 乐观锁与悲观锁
平时有没有用过乐观锁,怎么用的
4. CAS原理。有用过CAS吗
5. 什么是内存可见性,怎么保证的,可见性和原子性有什么关系?
6. 解释一下volatile和synchronized,两者一样吗?volatile能保证线程安全吗?
7. 索引的种类?什么是聚族索引?什么是覆盖索引?
8. 数据库的隔离级别有哪些
9. Redis出现多个Client同时修改redis服务器中同一个key怎么办?(redis并发竞争问题?)
10. redis的事务跟数据库的事务一样吗?
11. 一道算法题:
输入:1->2->3->….>n-1>n
输出:1->n->2->n-1->3->n-2…..

二面:
1. JVM
2. MVCC是什么?原理?
3. 乐观锁与悲观锁
4. volatile的原理?volatile有那些应用场景,写下代码
答:单例模式
写的代码:
public class Singleton {
    private Singleton(){}
    private volatile static Singleton instance;
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized(Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
  问:为什么要使用volatile修饰。
  答:为了防止指令重排序。
这行代码instance = new Singleton();实际上涉及到3个步骤
1.分配内存空间
2.初始化
3.instance指向分配的内存空间
2,3步骤是可以指令重排序的,如果不用volatile修饰,会造成
return一个未初始化的instance
继续问:synchronized(Singleton.class)已经保证了获取这个类锁的只能有一个线程,为什么还会出现这种情况?结合具体例子分析一下?
答:????
(感觉他是想让我分析一下,在不用volatile情况下,线程A与线程B同时执行这部分代码,如何才能出现return一个未初始化的instance)
5. 结合项目。
   项目中的注册登录模块。能记住登录用户吗?怎么做到的?
   Cookie与Session的区别?
   服务端是怎么验证用户的?生成的token有可能重复吗?
   客户端怎么存储token的?明文吗?如果被人截取怎么办,怎么保证安全性?
6. TCP/IP与UDP什么关系?
   TCP/IP是协议族,它的四层概念模型的传输层包含了UDP与TCP协议。
   那TCP与UDP有什么区别?
   UDP一对多怎么实现呢?
7. 什么是平衡二叉数
答:我先讲了一下排序二叉树,有什么缺点,然后讲什么是平衡二叉树
再问:给了个具体例子:
     10
    8  16
  6 9
这颗二叉树要新插入一个5怎么做?
答:5成为6的左孩子导致二叉树不平衡,要进行右旋转。
问:具体怎么旋转的,给你15分钟,代码实现一下
答:?????
8. 算法题:k个有序链表合并。要求讲一下时间复杂度。 

#字节跳动##秋招##提前批##Java工程师##面经#
全部评论
还要实现AVL树,要是我,铁定凉凉啊。
点赞 回复 分享
发布于 2019-07-05 19:14
头条都不问项目吗?
点赞 回复 分享
发布于 2019-07-05 19:16
校招吗还是
点赞 回复 分享
发布于 2019-07-05 19:18
透着屏幕都能感受到老哥的绝望
点赞 回复 分享
发布于 2019-07-05 19:26
...老哥面的啥岗啊,这也太难了吧
点赞 回复 分享
发布于 2019-07-05 19:30
老哥能有三面吗,感觉答的还可以阿
点赞 回复 分享
发布于 2019-07-05 19:47
大佬收到三面通知没?
点赞 回复 分享
发布于 2019-07-05 20:47
太难了啊
点赞 回复 分享
发布于 2019-07-05 22:10
大概面试了多久呢
点赞 回复 分享
发布于 2019-07-05 22:13
大佬这是哪个部门啊?
点赞 回复 分享
发布于 2019-07-05 22:21
变相手撕红黑树的感觉😂😂😂,可怕
点赞 回复 分享
发布于 2019-07-05 23:48
双重加锁校验,加volatile主要是为了保证可见性和防止指令重排,加synchronized类锁,这个应该问的可见性吧,不过手写平衡二叉树,我感觉emmmmmm,莫不是故意刁难你??
点赞 回复 分享
发布于 2019-07-06 09:17
楼主,你好,是不是面了完三面就很有机会呀?
点赞 回复 分享
发布于 2019-07-06 11:09
头条距离手写红黑树不远了
点赞 回复 分享
发布于 2019-07-06 13:33
老哥这个面完两面就没下文了?想问一下正常流程是三面一次性面完还是不管过没过都是先面两面?
点赞 回复 分享
发布于 2019-07-06 13:40
楼主 是否想这个问题的答案了  想知道为什么噶 感谢 ---继续问:synchronized(Singleton.class)已经保证了获取这个类锁的只能有一个线程,为什么还会出现这种情况?结合具体例子分析一下? 答:????-----
点赞 回复 分享
发布于 2019-07-06 15:02
从资源层面来看,sleep占有哪些资源??? 这个是什么意思啊?sleep之后不是释放了CPU的资源吗?
点赞 回复 分享
发布于 2019-07-10 15:50
这不是C++。。
点赞 回复 分享
发布于 2019-09-16 18:45
作者:空大老石头 链接:https://www.nowcoder.com/discuss/203548 来源:牛客网 结合项目。    项目中的注册登录模块。能记住登录用户吗?怎么做到的?    Cookie与Session的区别?    服务端是怎么验证用户的?生成的token有可能重复吗?    客户端怎么存储token的?明文吗?如果被人截取怎么办,怎么保证安全性? 你的项目只有用户模块吗?
点赞 回复 分享
发布于 2019-12-01 16:30

相关推荐

09-27 00:29
东北大学 Java
伟大的麻辣烫:查看图片
阿里巴巴稳定性 75人发布 投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
14 206 评论
分享
牛客网
牛客企业服务