zoukankan      html  css  js  c++  java
  • 快手Java开发 一二面面经(转载)1

    答案我自己看着写的,未必一定对,希望有个offer吧,不想去某个坑逼辣鸡公司。

     二面部分还没写完,差不多了吧。。。

    作者:GuiStarLee
    链接:https://www.nowcoder.com/discuss/417783?type=post&order=time&pos=&page=1&channel=
    来源:牛客网

    一面    一个小时

    1:自我介绍
    2:Spring IOC
      

     

     
    3: Spring AOP
     

     

     

    4:jvm内存结构

     java内存通常被划分为5个区域:程序计数器(Program Count Register,指向当前线程要执行的下一段指令代码)、本地方法栈(Native Stack,为 JVM 使用到的 Native 方法服务。也就是直接和底层交互的代码)、方法区(Methon Area,静态变量+常量+类信息(版本、方法、字段等)+运行时常量池存在方法区中。)、栈(Stack,为 JVM 执行 Java 方法服务)、堆(Heap,堆是Java虚拟机所管理的内存中最大的一块存储区域。堆内存被所有线程共享。主要存放使用new关键字创建的对象。所有对象实例以及数组都要在堆上分配。

     https://github.com/CyC2018/CS-Notes/blob/master/notes/Java%20%E8%99%9A%E6%8B%9F%E6%9C%BA.md#%E4%B8%80%E8%BF%90%E8%A1%8C%E6%97%B6%E6%95%B0%E6%8D%AE%E5%8C%BA%E5%9F%9F

     

     

     

     

     
     
     
     
     
     
    5:重载与重写
     
    (面试官还写了例子让我判断是不是重载)
    6:Excutors、 线程池的参数含义以及线程池的工作原理

     

     
    7:什么时候用到线程池的拒绝策略

     

     
    8:拦截器与过滤器
     
    9:创建线程的方式以及区别
      

    1)继承Thread类创建线程  编写简单,直接使用this即可获得当前线程。

    2)实现Runnable接口创建线程  编程复杂,如果要访问当前线程,则必须使用Thread.currentThread()方法。线程类只是实现了Runnable接口或Callable接口,还可以继承其他类,

    3)使用Callable和Future创建线程

     
    10:算法
    1):求二叉树的深度   (递归,根节点为null,返回0,;左右子树为空,返回1,否则就找左,右子树的深度,找大的那个加一)
    2):给定一个数组 求某个位置上的元素 满足左边的全小于它,右边的全大于它(新建俩数组,找每个元素左侧最大值,和右侧最小值。之后再遍历一遍就行)

    作者:GuiStarLee
    链接:https://www.nowcoder.com/discuss/417783?type=post&order=time&pos=&page=1&channel=
    来源:牛客网

    二面  一个小时

    1:自我介绍
    2:项目
    3:序列化有哪些方式
      将数据对象转换为二进制流的过程称为对象的序列化(Serialization)。反之,将二进制流恢复为数据对象的过程称为反序列化(Deserialization)。
      (1)

       (2)

       (3) 

     
    4:java多线程的内存模型(JMM?)
    5:并发包、ConcurrentHashMap等
    6:算法
    1):两个栈实现队列

    方法:一个栈存储元素,一个栈辅助
    维护两个栈,第一个栈存储元素,第二个栈用于辅助操作。

    根据栈的特性,第一个栈的底部元素是最后插入的元素,第一个栈的顶部元素是下一个被删除的元素。为了维护队列的特性,每次插入的元素应该在第一个栈的底部。因此每次插入元素时,若第一个栈内已经有元素,应将已有的全部元素依次弹出并压入第二个栈,然后将新元素压入第一个栈,最后将第二个栈内的全部元素依次弹出并压入第一个栈。经过上述操作,新插入的元素在第一个栈的底部,第一个栈内的其余元素的顺序和插入元素之前保持一致。

    删除元素时,若第一个栈非空,则直接从第一个栈内弹出一个元素并返回,若第一个栈为空,则返回 -1。

    另外维护队列的元素个数,用于判断队列是否为空。初始元素个数为 0。每次插入元素,元素个数加 1。每次删除元素,元素个数减 1。

    作者:LeetCode-Solution
    链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/solution/mian-shi-ti-09-yong-liang-ge-zhan-shi-xian-dui-l-3/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    class CQueue {
        Stack<Integer> stack1;
        Stack<Integer> stack2;
        int size;
    
        public CQueue() {
            stack1 = new Stack<Integer>();
            stack2 = new Stack<Integer>();
            size = 0;
        }
        
        public void appendTail(int value) {
            while (!stack1.isEmpty()) {
                stack2.push(stack1.pop());
            }
            stack1.push(value);
            while (!stack2.isEmpty()) {
                stack1.push(stack2.pop());
            }
            size++;
        }
        
        public int deleteHead() {
            if (size == 0) {
                return -1;
            }
            size--;
            return stack1.pop();
        }
    }
    
    /**
     * Your CQueue object will be instantiated and called as such:
     * CQueue obj = new CQueue();
     * obj.appendTail(value);
     * int param_2 = obj.deleteHead();
     */
    
    作者:LeetCode-Solution
    链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/solution/mian-shi-ti-09-yong-liang-ge-zhan-shi-xian-dui-l-3/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    

      

    2:):一个全英文题,意思是给定整数N  求1~N中 出现1的次数
  • 相关阅读:
    【bzoj3211】花神游历各国
    四维偏序(K-D-Tree+rebuild)
    【bzoj3295】动态逆序对
    BZOJ3444: 最后的晚餐
    BZOJ3091: 城市旅行
    BestCoder Round #72
    BZOJ2733: [HNOI2012]永无乡
    wc2016总结
    BZOJ4381: [POI2015]Odwiedziny
    BZOJ4196: [Noi2015]软件包管理器
  • 原文地址:https://www.cnblogs.com/lzh1043060917/p/12834962.html
Copyright © 2011-2022 走看看