
面试
面试
风筝Lee
儿时,你是父母手中的风筝;上学了,你是老师手中的风筝;工作了,你是领导手中的风筝;成家了,你是妻子手中的风筝;老时,你是子女手中的风筝。人生就像风筝,总有一根线牵着你,或长、或短,或紧、或松;你在这头,爱你的人就在那头。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RDBMS架构:B+树实现范围查询(Range Scan)
本文记录了基于B+树架构的关系型数据库中,是如何实现Range Scan功能的。设计时,B+树每个节点是一个page;所有key存储在叶子节点;内部节点完全是索引所用。B+树服从左节点 < 父节点 < 右节点;最底层叶子节点严格按照从小到大顺序排列。补充:Tree based,有序,支持点查询和范围查询(Range Scan);Hash based,无序,只支持点查询。References:[1] 陈世敏老师的《大数据管理系统与大规模数据分析》课程讲义...转载 2020-06-07 21:54:42 · 1316 阅读 · 0 评论 -
详解布隆过滤器的原理、使用场景和注意事项
在进入正文之前,之前看到的有句话我觉得说得很好:Data structures are nothing different. They are like the bookshelves of your application where you can organize your data. Different data structures will give you different f...转载 2020-04-24 12:16:28 · 228 阅读 · 0 评论 -
java经典面试题之hashmap
经典面试题总结: hashmap具备哪些特点? Java7和Java8的区别? 哈希表如何解决Hash冲突? 为什么 HashMap 中 String、Integer 这样的包装类适合作为 key 键 HashMap 中的 key若 Object类型, 则需实现哪些方法? hash的计算规则? 默认初始化大小是多少?为啥...原创 2020-04-12 09:33:56 · 399 阅读 · 0 评论 -
BlockingQueue解析
BlockingQueue作为线程容器,可以为线程同步提供有力的保障。常用方法:1.BlockingQueue定义的常用方法如下: 抛出异常 特殊值 阻塞 超时 插入 add(e) offer(e) put(e) offer(e, time, unit) 移除 remove() poll() take()...转载 2020-03-31 15:07:06 · 392 阅读 · 0 评论 -
java、大数据相关面试题总结
一.java并发1.concurrenthashmap实现原理;2.Semaphore实现原理;3.AQS实现原理;4.javanio实现原理;5.java线程InterruptedException的理解;6.java8stampedlock实现原理;二.数据结构1.二叉树遍历;层序、深度优先、广度优先、前中后序遍历;2.链表反转、判断是否有环;3.Btree 、B+tree;4.平衡二叉树、红黑树;三.算法...原创 2020-05-21 15:25:32 · 351 阅读 · 0 评论 -
Java字符串面试题大全
1. java字符串转整型要求不能使用Integer.praseInt和valueOf方法;方法:遍历每个字符得出unicode值然后减去0的accii值,再乘以10的source.length-i-1次方,累加即可得出真实的int值。 public static void main(String[] args) { String source = "123"; long sum = 0; for (int i = 0; i < ..原创 2020-05-11 12:04:16 · 264 阅读 · 0 评论 -
Leecode-二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7]代码:public class Solution{ public int maxDepth(TreeNode root) { int i,j; i...原创 2020-05-06 17:11:33 · 139 阅读 · 0 评论 -
二叉树深度遍历与广度遍历java实现
概念定义:深度优先遍历:深度优先遍历是图论中的经典算法。其利用了深度优先搜索算法可以产生目标图的相应拓扑排序表,采用拓扑排序表可以解决很多相关的图论问题,如最大路径问题等等。根据深度优先遍历的特点我们利用Java集合类的栈Stack先进后出的特点来实现。我用二叉树来进行深度优先搜索。深度优先搜索的步骤为:(1)、首先节点 1 进栈,节点1在栈顶;(2)、然后节点1出栈,访问节点...转载 2020-04-30 11:13:06 · 363 阅读 · 0 评论 -
BitMap算法总结
简介bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此可以大大节省存储空间。基本思想这此我用一个简单的例子来详细介绍BitMap算法的原理。假设我们要对0-7内的5个元素(4,7,2,5,3)进行排序(这里假设元素没有重复)。我们可以使用BitMap算法达到排序目的。...转载 2020-04-24 11:34:01 · 694 阅读 · 0 评论 -
分布式一致性协议介绍(Paxos、Raft)
两阶段提交Two-phase Commit(2PC):保证一个事务跨越多个节点时保持 ACID 特性;两类节点:协调者(Coordinator)和参与者(Participants),协调者只有一个,参与者可以有多个。过程: 准备阶段:协调者询问参与者事务是否执行成功; 提交阶段:如果事务在每个参与者上都执行成功,协调者发送通知让参与者提交事务;否则,协调者发...转载 2020-04-20 23:53:10 · 179 阅读 · 0 评论 -
Redis与Zookeeper实现分布式锁的区别
实现原理后续整理。两种方式具体区别如下:redis分布式锁,其实需要自己不断去尝试获取锁,比较消耗性能zk分布式锁,获取不到锁,注册个监听器即可,不需要不断主动尝试获取锁,性能开销较小另外一点就是,如果是redis获取锁的那个客户端bug了或者挂了,那么只能等待超时时间之后才能释放锁;而zk的话,因为创建的是临时znode,只要客户端挂了,znode就没了,此时就自动释放锁...原创 2020-04-19 14:20:11 · 1604 阅读 · 0 评论 -
给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
采用分治的思想假如每个url大小为64bytes,那么可以估计每个文件的大小为50G×64=320G,远远大于内存限制的4G,所以不可能将其完全加载到内存中处理,可以采用分治的思想来解决。 Step1:遍历文件a,对每个url求取hash(url)%1000,然后根据所取得的值将url分别存储到1000个小文件(记为a0,a1,...,a999,每个小文件约300M); ...转载 2020-04-19 11:38:07 · 1222 阅读 · 1 评论 -
LeetCode—java之Reverse Integer(反转整数)
题目要求:Given a 32-bit signed integer, reverse digits of an integer.ote:Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,...转载 2020-04-18 22:04:52 · 171 阅读 · 0 评论 -
数据结构面试题-链表篇(java实现)
链表数据结构:class ListNode { ListNode next; int val; ListNode(int x){ val = x; next = null; }}1. 翻转链表: //翻转链表(遍历方式) ListNode reverse(ListNode node){ Li...原创 2020-04-18 21:42:03 · 288 阅读 · 0 评论 -
LeetCode—java之最长回文子串
题目给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路动态规划:首先初始化一字母和二字母的回文,然后找到所有三字母回文,并依此类推…为了改进暴力法,我们首先观察如何避免在验证回文时进行不必...转载 2020-04-18 19:56:52 · 229 阅读 · 0 评论 -
LeetCode—Java之二进制求和
题目要求:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字1和0。示例1:输入: a = "11", b = "1"输出: "100"示例2:输入: a = "1010", b = "1011"输出: "10101"(1)使用jdk进制转化1,第一时间想到使用jdk自带方法,将给定的二进制数转化为十进制;2,然后相加...转载 2020-04-18 19:16:50 · 321 阅读 · 0 评论 -
数据结构面试题总结java
持续更新。。。。1.用两个栈实现一个队列;考察点:队列和栈的特点public class MyQueue { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); pu...原创 2020-04-13 12:35:33 · 181 阅读 · 0 评论 -
jvm面试题总结
持续更新。。。。目录1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?2. JAVA 内存模型2. JAVA 内存模型4.JVM垃圾回收算法5. JVM垃圾收集器有哪些?以及优劣势比较?1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java...原创 2020-04-12 17:37:55 · 181 阅读 · 0 评论 -
java多线程面试题总结
持续总结更新:1. synchronized修饰静态方法前和普通方法的区别?Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称“对象锁”Synchronized修饰静态方法,实际上是对该类对象加锁,俗称“类锁”。对象锁钥匙只能有一把才能互斥,才能保证共享变量的唯一性在静态方法上的锁,和 实例方法上的锁,默认不是同样的,如果同步需要制定两把锁一样。...原创 2020-04-12 15:09:21 · 139 阅读 · 0 评论