Welcome everyone

今日头条校招面试

面试 汪明鑫 753浏览 0评论

上次面头条实习挂了,挂了的部门的hr把我推给了另一个部门的校招。

星期天头条加班过来面试的,面试的人贼多,坐满了,每个桌子都有人面试,特别吵。

 

1,自我介绍

2,项目相关

3,注册登陆逻辑

注册会发送激活邮箱

 

4,密码怎么保存,怎么防止暴力破解 ,MD5,自定义加密算法,对密码取hashCode( )等

5,session和cookie   cookie有哪些属性

 

cookie属性以前看过,但面试忘了,只记得有个超时

name字段 :一个cookie的名称。

value字段 :一个cookie的值。

domain字段 :可以访问此cookie的域名

path字段:可以访问此cookie的页面路径。

Size字段 :此cookie大小。

http字段 :cookie的httponly属性。若此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie。

secure 字段 :设置是否只能通过https来传递此条cookie

 

6,TCP连接状态名称及含义

3次握手,4次分手,具体状态的名称记不住了

 

7,https怎么实现的

8,java中的锁 (synchronized,lock)

9,synchronized还有什么作用

10,什么是指令重排序

11,怎么产生死锁 (这个经常问)

12,线程池相关  线程池参数

13,手写阻塞队列

当时用wait( ),signal( ),知道大概咋写,但一些细节忘咋写了。。。

 

 

public class MyBlockQueue {

    private List<Integer> container = new ArrayList<>();
    private volatile int size;
    private volatile int capacity;
    private Lock lock = new ReentrantLock();

    private final Condition isNull = lock.newCondition();
    private final Condition isFull = lock.newCondition();

    MyBlockQueue(int cap) {
        this.capacity = cap;
    }

    public void add(int data) {
        try {
            lock.lock();
            try {
                while (size >= capacity) {
                    System.out.println("阻塞队列满了");
                    isFull.await();
                }
            } catch (InterruptedException e) {
                isFull.signal();
                e.printStackTrace();
            }
            ++size;
            container.add(data);
            isNull.signal();
        } finally {
            lock.unlock();
        }
    }

    public int take() {
        try {

            lock.lock();
            try {
                while (size == 0) {
                    System.out.println("阻塞队列空了");
                    isNull.await();
                }
            } catch (InterruptedException e) {
                isNull.signal();
                e.printStackTrace();
            }
            --size;
            int res = container.get(0);
            container.remove(0);
            isFull.signal();
            return res;
        } finally {
            lock.unlock();
        }
    }
}

 

 

14,mysql存储引擎及其区别

15,mysql隔离级别相关(这个也经常问),设置成哪个级别解决了什么问题,mysql的默认隔离级别可重复解决了什么问题,能解决幻读吗?怎么去验证?

注意:mysql默认的隔离级别下的可重复读,可能会产生幻读(针对数据的整体,凭空多了一行或者少了一行),但是能保证读到过的数据的一致

 

16,mysql的锁

17,for update是什么锁

行锁

 

18,怎么加读锁

LOCK TABLES test_table READ
UNLOCK test_table
LOCK TABLES test_table WRITE
UNLOCK test_table

 

 

19,写SQL: 有一张表,只有uid,可以重复,求出重复次数最多的前三个uid

select uid from user group by uid order by count(uid) limit 3

 

20,linux熟嘛

21,linux跨域请求 (不懂)

百度:

跨域请求有三种方式:jsonp,XHR2,代理

 

22,Zookeeper是做什么的

23,分布式锁

24,给一个List,里面装了一组区间  [ left,right ] ,如果这些区间有交集,合并有交集的区间,如[1,3] , [2,4]合并为[1,4]

//区间类
class Range{
    int left;
    int right;
}
List<Range>   merge(List<Range> data){
        
}

 

附上我下来写的代码,面试时候手写的,有一点小问题

package pers.wmx.demo;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: wangmingxin1
 * @create: 2018-11-26 10:15
 **/
public class MergeRange {

    List<Range> merge(List<Range> data){
        List<Range> result  = new ArrayList<>();

        boolean []flag = new boolean[result.size()];

        for (int i = 0; i <data.size()  ; i++) {    //对于第i个区间

            if(!flag[i]){     //如果没有和之前的区间合并
                flag[i] = true;
                int tempLeft = data.get(i).left;
                int tempRight = data.get(i).right;

                for (int j = i+1; j < data.size() ; j++) {     //考虑第i个区间后面的区间能否和其合并
                    if(!flag[j] && data.get(j).left <= tempRight && data.get(j).left >= tempLeft){

                        if(data.get(j).right > tempRight ) {
                            tempRight = data.get(j).right;
                        }

                        flag[j] = true;   //表示与当前第i个区间合并

                    }

                }

                Range range = new Range();
                range.left = tempLeft;
                range.right = tempRight;
                result.add(range);

            }


        }

        return result;

    }

}

class Range{
    int left;
    int right;
}

25,你有什么问题

 

 

 

 

转载请注明:汪明鑫的个人博客 » 今日头条校招面试

喜欢 (0)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz