快手Java开发 一二面面经(转载)1
答案我自己看着写的,未必一定对,希望有个offer吧,不想去某个坑逼辣鸡公司。
二面部分还没写完,差不多了吧。。。
作者:GuiStarLee
链接:https://www.nowcoder.com/discuss/417783?type=post&order=time&pos=&page=1&channel=
来源:牛客网
java内存通常被划分为5个区域:程序计数器(Program Count Register,指向当前线程要执行的下一段指令代码)、本地方法栈(Native Stack,为 JVM 使用到的 Native 方法服务。也就是直接和底层交互的代码)、方法区(Methon Area,静态变量+常量+类信息(版本、方法、字段等)+运行时常量池存在方法区中。)、栈(Stack,为 JVM 执行 Java 方法服务)、堆(Heap,堆是Java虚拟机所管理的内存中最大的一块存储区域。堆内存被所有线程共享。主要存放使用new关键字创建的对象。所有对象实例以及数组都要在堆上分配。)
1)继承Thread类创建线程 编写简单,直接使用this即可获得当前线程。
2)实现Runnable接口创建线程 编程复杂,如果要访问当前线程,则必须使用Thread.currentThread()方法。线程类只是实现了Runnable接口或Callable接口,还可以继承其他类,
3)使用Callable和Future创建线程
作者:GuiStarLee
链接:https://www.nowcoder.com/discuss/417783?type=post&order=time&pos=&page=1&channel=
来源:牛客网
(2)
(3)
方法:一个栈存储元素,一个栈辅助
维护两个栈,第一个栈存储元素,第二个栈用于辅助操作。
根据栈的特性,第一个栈的底部元素是最后插入的元素,第一个栈的顶部元素是下一个被删除的元素。为了维护队列的特性,每次插入的元素应该在第一个栈的底部。因此每次插入元素时,若第一个栈内已经有元素,应将已有的全部元素依次弹出并压入第二个栈,然后将新元素压入第一个栈,最后将第二个栈内的全部元素依次弹出并压入第一个栈。经过上述操作,新插入的元素在第一个栈的底部,第一个栈内的其余元素的顺序和插入元素之前保持一致。
删除元素时,若第一个栈非空,则直接从第一个栈内弹出一个元素并返回,若第一个栈为空,则返回 -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) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。