面试题分享专栏
文章平均质量分 61
日常刷题整理汇总
快乐骑行^_^
全栈技术博主,博主会持续更新专栏文章,欢迎关注和订阅博主,欢迎私信与博主交流技术。
展开
-
Java笔试系列之:如何判断两颗二叉树是否相等
Java笔试系列之:如何判断两颗二叉树是否相等原创 2022-12-11 15:31:45 · 597 阅读 · 0 评论 -
java笔试题系列之:从无序链表中移除重复项
java笔试题系列之:从无序链表中移除重复项顺序删除题目描述:给定一个没有排序的链表,去掉其重复项,并保留原顺序,如链表1->3->1->5->5->7,去掉重复项后变为1->3->5->7。单链表数据结构:public class LNode { int data; LNode next;}顺序删除主要思路为:通过双重循环直接在链表上执行删除操作。外层循环用一个指针从第一个节点开始遍历整个链表,然后内层循环用另外一个指针原创 2022-01-17 02:15:00 · 500 阅读 · 0 评论 -
java笔试题系列之:实现链表的逆序
java笔试题系列之:实现链表的逆序方法一:就地逆序方法二:插入法题目描述:给定一个带头节点的单链表,请将其逆序。即如果单链表原来为head->1->2->3->4->5->6->7,则逆序后变为head->7->6->5->4->3->2->1。单链表数据结构:public class LNode { int data; LNode next;}方法一:就地逆序主要思路:在遍历链表时,修原创 2022-01-15 23:01:30 · 1226 阅读 · 0 评论 -
Java笔试题系列之:如何找出数组中唯一的重复元素
Java笔试题一:如何找出数组中唯一的重复元素问题描述:数组a[N],1~N-1这N-1个数存放在a[N]中,其中某个数重复1次。写一个函数,找出被重复的数字。要求每个数组元素只能访问1次,并且不用辅助存储空间。方法一:由于题目要求每个数组元素只能访问1次,且不用辅助存储空间,因此可以从原理上入手,采用数学求和法,因为只有一个数字重复1次,而又是连续的,根据累加和原理,对数组的所有项求和,然后减去1~N-1的和,即为所求的重复数。public class DuplicateElement {原创 2021-08-17 10:40:21 · 370 阅读 · 0 评论 -
Java基础知识面试题系列九:91~100题
Java基础知识面试题系列九:91~100题91.什么是守护线程92.什么是设计模式93.什么是单例模式94.什么是工厂模式91.什么是守护线程Java提供了两种线程:守护线程用户线程守护线程:守护线程又被称为服务进程或后台线程,是指在程序运行时在后台提供一种通用服务的线程,这种线程并不属于程序中不可或缺的部分。任何一个守护线程都是整个JVM中所有非守护线程的保姆。用户线程:用户线程和守护线程几乎一样,唯一不同之处就在于如果用户线程已经全部退出运行,只剩下守护线程存在了,JVM也原创 2021-08-16 15:07:33 · 209 阅读 · 0 评论 -
Java基础知识面试题系列八:81~90题
Java基础知识面试题系列七:81~90题81.Java Collections框架是什么82.什么是迭代器83.Iterator与ListIterator有什么区别84.ArrayList、Vector和LinkedList有什么区别85.ArrayList、Vector和LinkedList容器使用场景选择86.HashMap、Hashtable、TreeMap和WeakHashMap有哪些区别81.Java Collections框架是什么Java Collections框架中包含了大量集合接口原创 2021-08-16 12:01:51 · 179 阅读 · 0 评论 -
Java基础知识面试题系列七:71~80题
Java基础知识面试题系列七:71~80题71.JVM加载class文件的原理机制是什么72.什么是GC73.Java中是否存在内存泄漏问题71.JVM加载class文件的原理机制是什么Java语言是一种具有动态性的解释型语言,类(class)只有被加载到JVM中后才能运行。当运行指定程序时,JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中,并组织成为一个完整的Java应用程序。这个加载过程是由类加载器来完成的,具体来说,就是由ClassLoader和它的子类来实现的。类加载原创 2021-08-15 17:40:33 · 193 阅读 · 0 评论 -
Java基础知识面试题系列七:61~70题
Java基础知识面试题系列七:61~70题一、Java IO流的实现机制是什么一、Java IO流的实现机制是什么在Java语言中,输入和输出都被称为抽象的流,流可以被看作一组有序的字节集合,即数据中两设备之间的传输。流可以分为两大类:字节流和字符流。字节流以字节(8bit)为单位,包含两个抽象类:InputStream(输入流)和OutputStream(输出流)。字符流以字符(16bit为单位),根据编码映射字符,一次可以读多个字节,包含两个抽象类,Reader(输入流)和Writer(输出原创 2021-08-15 11:45:24 · 202 阅读 · 0 评论 -
Java基础知识面试题系列六:51~60题
Java基础知识面试题系列六:51~60题51."=="、equals和hashCode有什么区别52.String、StringBuffer、StringBuilder和StringTokenizer有什么区别51."=="、equals和hashCode有什么区别==:运算符用来比较两个变量的值是否相等。也就是说,该运算符用于比较变量对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能使用“==”运算符。如果一个变量指向的数据是对象(引用类型),涉及了两块内存原创 2021-08-14 12:05:16 · 270 阅读 · 0 评论 -
Java基础知识面试题系列五:41~50题
Java基础知识面试题系列三:41~50题41.值传递与引用传递有哪些区别41.值传递与引用传递有哪些区别方法调用是编程语言中非常重要的一个特性,在方法调用时,通常需要传递一些参数来完成特定的功能。Java语言提供了两种参数传递的方式:值传递引用传递值传递:在方法调用中,实参会把它的值传递给形参,形参只是用实参的值初始化一个临时的存储单元,因此形参与实参虽然有着相同的值,但是却有着不同的存储单元,因此对形参的改变不会影响实参的值。引用传递:在方法调用中,传递的是对象(也可以看作是原创 2021-08-12 10:49:45 · 192 阅读 · 0 评论 -
Java基础知识面试题系列四:31~40题
Java基础知识面试题系列三:31~40题31.static与final结合使用表示什么意思32.使用switch时有哪些注意事项31.static与final结合使用表示什么意思在Java语言中,static关键字常与final关键字结合使用,用来修饰成员变量与成员方法,有点类似于C/C++语言中的“全局变量”。对于变量,若使用static final修饰,则表示一旦赋值,就不可修改,并且通过类名可以访问。对于方法,若使用static final修饰,则表示该方法不可覆盖,并且可以通过类名直接访原创 2021-08-11 10:40:18 · 259 阅读 · 0 评论 -
Java基础知识面试题系列三:21~30题
Java基础知识面试题系列三:21~30题21.抽象类(abstract class)与接口(interface)有什么异同21.抽象类(abstract class)与接口(interface)有什么异同一个类中包含抽象方法,这个类就是抽象类。在Java语言中,可以通过把类或者类中的某些方法声明为abstract(abstract只能用来修饰类或者方法,不能用来修饰属性)来表示一个类是抽象类。接口就是指一个方法的集合,接口中的所有方法都没有方法体,在Java语言中通过关键字interface来实原创 2021-08-03 22:12:44 · 356 阅读 · 0 评论 -
Java基础知识面试题系列二:11~20题
Java基础知识面试题系列二:11~20题11.如何实现类似于C语言中函数指针的功能12.package有什么作用13.面向对象与面向过程有什么区别11.如何实现类似于C语言中函数指针的功能在C语言中,有一个非常重要的概念——函数指针,最重要的功能是实现回调函数。回调函数:就是指函数现在某处注册,而它将在稍后某个需要的时候被调用。在windows系统中,开发人员想让系统动态链接库(DLL)调用自己编写的一个方法,于是利用DLL当中回调函数的借口来编写程序,通过传递一个函数的指针来被调用,这个过程原创 2021-08-02 15:28:01 · 189 阅读 · 0 评论 -
Java基础知识面试题系列一:1~10题
Java基础知识面试题系列一:1~10题1.为什么需要public static void main(String[] args)这个方法2.如何实现这main()方法执行前输出hello world3.Java程序初始化的顺序是怎样的4.Java中的作用域有哪些5.一个Java文件中是否可以定义多个类6.什么是构造函数7.为什么Java中有些接口没有任何方法8.浅复制和深复制的区别9.java中的clone方法有什么作用10.什么是反射机制1.为什么需要public static void main(S原创 2021-08-02 10:24:26 · 165 阅读 · 0 评论 -
海量数据处理:Hash法
海量数据处理:Hash法Hash一般被称为散列,是一种映射关系,即给定一个数据元素,其关键字为key,按一个确定的散列函数计算出hash(key),把hash(key)作为关键字key对应元素的存储地址(或称散列地址),再进行数据元素的插入和检索操作。简而言之,散列函数就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。散列表是具有固定大小的数组,表长(即数组的大小)应该为质数。散列函数是用于关键字与存储地址之间的一种映射关系,但是不能保证每个元素的关键字与函数值是一一对应的,因为极有可能出现对原创 2021-08-01 14:32:13 · 352 阅读 · 0 评论 -
海量数据处理:MapReduce法
海量数据处理:MapReduce法MapReduce适用于大规模数据集(通常大于1TB)的并行运算,核心操作是Map(映射)和Reduce(化简)。Map函数独立地对每个元素进行操作,用于把一组健值对映射成一组新的健值对,即先通过Map程序将数据切割成不相关的区域,分配(调度)给大量计算机处理达到分布计算的效果,然后通过指定并发的Reduce函数来将结果汇总,保证所有映射键值对中的每一个共享相同的键组。Map是把一组数据一对一地映射为另外的一组数据,其映射的规则由一个函数来指定,例如对【1,2,4,8原创 2021-08-01 11:04:57 · 1634 阅读 · 0 评论 -
java版本剑指offer:在二叉树中找到两个节点的最近公共祖先
java版本剑指offer:在二叉树中找到两个节点的最近公共祖先描述给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。注:本题保证二叉树中每个节点的val值均不相同。示例1输入:[3,5,1,6,2,0,8,#,#,7,4],5,1返回值:3方法一:递归这颗树的某个节点等于节点o1或o2,就向上返回这个节点给父节点当前节点的左右子树返回值分别是o1、o2,当前这个节点就是最近公共祖先当前节点只有一个子树的返回原创 2021-07-27 13:21:34 · 273 阅读 · 0 评论 -
java版本剑指offer:二分查找
java版本剑指offer:二分查找描述请实现有重复数字的升序数组的二分查找给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1示例1输入:[1,2,4,4,5],4返回值:2说明:从左到右,查找到第1个为4的,下标为2,返回2示例2输入:[1,2,4,4,5],3返回值:-1示例3输入:[1,1,1,1,1],1返回值:0解题思路:查找之后原创 2021-07-27 11:43:53 · 153 阅读 · 0 评论 -
Java版剑指offer:用两个栈实现队列
Java版剑指offer:用两个栈实现队列描述用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。示例:输入:[“PSH1”,“PSH2”,“POP”,“POP”]返回:1,2解析:“PSH1”:代表将1插入队列尾部“PSH2”:代表将2插入队列尾部"POP“:代表删除一个元素,先进先出=>返回1"POP“:代表删除一个元素,先进先出=>返回2示例原创 2021-07-27 11:27:59 · 243 阅读 · 0 评论 -
Java版剑指offer:链表中环的入口结点
Java版剑指offer:链表中环的入口结点描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。输入描述:输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台将这2个会组装成一个有环或者无环单链表返回值描述:返回链表的环的入口结点即可。而我们后台程序会打印这个节点示例1输入:{1,2},{3,4,5}返回值:3说明:返回环形链表入口节点,我们后台会打印该环形链表入口节点,即3示例2输入:{1},{}返回值:“null”说明:没有原创 2021-07-25 21:59:09 · 312 阅读 · 4 评论 -
java版:层序遍历
描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树层序遍历的结果是[[3],[9,20],[15,7]]示例1输入:{1,2}返回值:[[1],[2]]示例2输入:{1,2,3,4,#,#,5}返回值:[[1],[2,3],[4,5]]解题思路:层序遍历:就是从根节点(第一层)开始,依次向下,获取每一层所有结点的值,有二叉树如下:实现步骤:1.创建队列,存储每一层原创 2021-07-25 19:21:20 · 1132 阅读 · 1 评论 -
java剑指offer:两个链表的第一个公共结点
java剑指offer:两个链表的第一个公共结点描述输入两个无环的单链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)解题思路:先假设链表A头结点与结点8的长度 与 链表B头结点与结点8的长度相等,那么就可以用双指针。初始化:指针ta指向链表A头结点,指针tb指向链表B头结点如果ta == tb, 说明找到了第一个公共的头结点,直接返回即可,否则,ta != tb,则++ta,++tb所以现在的问题就变成,如何让本来长原创 2021-07-25 18:14:46 · 292 阅读 · 0 评论 -
java版剑指offer:二叉搜索树的后序遍历序列
java版剑指offer:二叉搜索树的后序遍历序列描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜索树)示例1输入:[4,8,6,12,16,14,10]复制返回值:true二叉搜索树:每个节点中的值必须大于(或等于)存储在其左侧子树中的任何值。每个节点中的值必须小于(或等于)存储在其右子树中的任何值。前序遍历:先访问根结点,然后再访问左子树,最原创 2021-07-25 17:44:42 · 236 阅读 · 0 评论 -
java版本剑指offer:反转链表
java版本剑指offer:反转链表描述输入一个链表,反转链表后,输出新链表的表头。示例1输入:{1,2,3}返回值:{3,2,1}此题想考察的是:如何调整链表指针,来达到反转链表的目的。初始化:3个指针:1)pre指针指向已经反转好的链表的最后一个节点,最开始没有反转,所以指向null2)cur指针指向待反转链表的第一个节点,最开始第一个节点待反转,所以指向head3)nex指针指向待反转链表的第二个节点,目的是保存链表,因为cur改变指向后,后面的链表则失效了,所以需要保存原创 2021-07-25 11:42:25 · 180 阅读 · 0 评论 -
java版本剑指offer:链表中倒数最后k个结点
java版本剑指offer:链表中倒数最后k个结点描述输入一个链表,输出一个链表,该输出链表包含原链表中从倒数第k个结点至尾节点的全部节点。如果该链表长度小于k,请返回一个长度为 0 的链表。最简单的方式就是使用两个指针,第一个指针先移动k步,然后第二个指针再从头开始,这个时候这两个指针同时移动,当第一个指针到链表的末尾的时候,返回第二个指针即可。注意,如果第一个指针还没走k步的时候链表就为空了,我们直接返回null即可。import java.util.*;/* * public c原创 2021-07-25 10:44:17 · 257 阅读 · 1 评论 -
Java版剑指offer:平衡二叉树
描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。注:我们约定空树是平衡二叉树。public class Solution { public boolean IsBalanced_Solution(TreeNode root) { //正常算树的深度,中间原创 2021-07-25 10:07:21 · 206 阅读 · 0 评论 -
Java版剑指offer:二叉树的深度
描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。示例1输入:{1,2,3,4,5,#,6,#,#,7}复制返回值:4一、递归public class Solution { public int TreeDepth(TreeNode root) { if (root==null) return 0; int left=TreeDepth(root.lef原创 2021-07-24 18:49:59 · 216 阅读 · 0 评论 -
Java版剑指offer:二维数组中的查找
1.在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target = 7,返回 true。给定 target = 3,返回 false。一、暴力解决方法public class Solution { public boolean Find(i原创 2021-07-24 18:01:24 · 189 阅读 · 0 评论
分享