- 博客(58)
- 收藏
- 关注
原创 Spark Shuffle 的过程
shuffle 的核心要点shuffleMapStage 与 ResultStage在划分 stage 时,最后一个stage 成为 finalStage,它本质上是 resultstage 对象,前面的所有的 stage 被称为 shuffleMapStage。shuffleMapStage 的结束伴随着 shuffle 文件的写磁盘。ResultStage 基本上对应着代码中的 action 算子,即是将一个函数应用在 rdd 的各个的数据集上,意味着一个 job 的结束。基本的流程: 在DA
2020-08-27 21:09:03 457
原创 Spark的运行基本流程以及任务调度机制
1.Spark yarn-Cluster 的任务调度流程 Cluster 模式用于监控和调度的 Driver 模块启动在 Yarn 集群中执行,一般用于生产环境当中。Yarn-cluster 模式下,client 任务提交之后之后(spark-summit 脚本),和 RM 通讯申请启动 ApplicationMaster;随后 RM 分配 container ,在合适的NodeManager 上启动 ApplicationMaster,此时 ApplicationMaster 就是 Drive
2020-08-27 16:39:08 740
原创 Spark join 的三种实现方式
mysql 的 join 是怎么实现的?当前 SparkSql 支持三种 join 算法:1、shuffle hash join, 2、broadcast hash join ,3、sort merge join。其中前两者是基于 hash join 的衍生的,只不过是在hash join 之前先进行broadcast 或则 shuffle,然后再进行 hash join,几十年前数据库就有了 hash join 的方法,spark 的这两种 join 只是加上了分布式的场景和思想而已。接下来,我们先说说
2020-08-27 10:02:47 2332
原创 谈谈 Java static 关键字
问题1 、静态方法不能调用非静态成员,编译会报错?为什么会报错,能不能从类加载机制方面来说?Static 关键字在类中,用 static 声明的成员变量为静态成员变量,也叫做类变量。类变量的生命周期和类相同,在整个应用程序期间都有效,因为在类加载的时候1、修饰变量:因为类要被加载进方法区,所以多个对象可以共享 static 修饰的变量。2、修饰方法:类似工具类的方法(比如 Arrays.sort(nums)),不需要创建对象,直接使用“类名.方法名”的方式调用。3、修饰静态代码块:这个代码块只会
2020-08-13 11:15:54 175
原创 8.8 网易笔试
分析时间:1个小时40分钟四道题,难度还可以,太菜只写出了第一道第三道1、牛牛现在有一个包含N的正整数的数组a,牛牛可以将其中的每个数a[i] 都拆成若干个和为 a[i] 的整数,牛牛想知道这个数组最多能有多少素数?输入描述 第一行一个正整数n表示数组的长度 第二行n个正整数表示a[i]的值 1 <= n <= 1e6,1 <= a[i] <= 1e9输出描述 拆后数组最多的素数个数示例1输入31 1 1输出0说明由于1不能再拆,并且1不是素数,所
2020-08-08 21:54:40 1434 11
原创 操作系统总结-进程、线程、协程
1.进程、线程、协程的区别**进程:**一个内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如 windows 的任务管理器中的一个 xx.exe 就是一个进程。**线程:**进程中的一个执行任务(控制单元),负责当前进程的程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可以共享数据。进程与线程的区别总结(从资源开销、内存分配、包含关系、影响关系、执行过程、调度、通信 这些方面来说)根本的区别:进程是操作系统的资源分配的基本单位,而线程是处理
2020-08-01 21:12:47 215
原创 每天一道 leetcode——875. 爱吃香蕉的珂珂
875. 爱吃香蕉的珂珂珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。示例 1:输入: piles = [3,6,7,11],
2020-07-25 12:00:06 5191
原创 Flume知识点总结
1.为什么会用到 Flume?实时读取服务器本地磁盘的数据,将数据写到分布式文件系统当中(HDFS/Kafka/Hbase/ElasticSearch)Flume 在这中间充当一个中间件的作用,进行比如现在的推荐,实时的推荐的
2020-07-22 23:57:13 184
原创 大华面试(Java 基础)
面试记录总结7-17 大华一面(java 基础)1. 讲一下 java 和其他语言的区别,说下 java 的平台无关性,如何做到一次编译,到处运行关于java 的特性,可以从 java 的优点来说。java 特点:1) java 是纯面向对象的语言。一切皆对象,它能够直接反应现实生活中的对象,比如火车,人,动物等,因此开发人员更容易编写程序。2)平台无关性。可以做到 “ 一次编译,到处执行 ”。因为 java 是解释型语言,编译器将 Class 文件编译成与平台无关的字节码,然后在虚拟机上执行,
2020-07-19 16:36:57 1355
原创 大数据之 Hive 的总结
1.Hive 是什么,讲一下你理解的 Hive用于数据的统计,提供类 sql 的查询功能,本质上就是将 HQL 转化为 Mapreduce.Hive 的数据存储在 hdfs 上。Hive 底层数据分析的实现是由 MR 完成。执行程序是运行在 Yarn 上。1.为什么使用 hive ,hive 的优点核心点在于 数据量问题,Hive 的数据量是存储在分布式集群的 hdfs 上,所以能存储很大的数据量,而 mysql 存存在本地文件系统中,存储的少量的数据。由于数据量大,没有索引,Hive 查
2020-07-16 15:32:04 840
原创 字节面试中的一些编程题练习
字节面试编程小练题目描述1.给定一个数组,前面一部分已经排好序,后面一部分也排好序,将整个数组排序。分析:类似leetcode上的一道原题的基础上加排序[153. 寻找旋转排序数组中的最小值][1],数组类似[4,5,6,0,1,2]利用二分查找找到最小值 0 ,然后还原成有序的数组。利用二分查找,找出第一个变小的数,二分查找,其实就是一个缩小范围的过程,慢慢接近 target.nums[mid] 与目标值的比较有两种选择,分别是 nums[left],num[right],左右端点,无论选择哪
2020-07-08 11:23:41 383
原创 Zookeeper 总结与面试题汇总
1.zookeeper的用处从工作机制上来说,Zk = 文件系统 + 通知机制想个哨兵一样,它负责存储和管理大家都关心的数据,然后接收观察者的注册,一旦这些数据的状态发生变化,Zk 就通知已经在Zookeeper 已经注册的观察者做出相应的反应。2.zookeeper的数据结构(树)? 讲一下基于它实现的分布式锁?基于它实现的Master选举?基于它的集群管理?zookeeper的注册(watch)机制和轮询机制的使用场景?1. Zk 的数据结构是树,同样数据结构的还有 linux 文件系统和 h
2020-07-01 21:38:18 495
原创 Hadoop 优化的一些方法
1 .MapReduce 跑的慢的原因1.1主要有两点:计算机性能CPU、内存、磁盘、网络IO 操作优化数据倾斜2)Map 和 Reduce 数目设置不合理3)Map 时间过长,导致 Reduce 等待太久4)小文件过多5)大量的不可分块的超大文件6)spill(溢写)次数过多7)Merge 次数过多1.2 MapReduce 优化方法主要从六个方面考虑:数据输入,Map 阶段、Reduce 阶段、IO传输阶段、数据倾斜问题和参数调优。1.2.1 数据输入(1
2020-06-29 22:27:38 458
原创 Hadoop总结之MR
1.思考 MR的缺点?不擅长实时计算hadoop 的 文件是存储磁盘的 hdfs 内,传输相比内传会慢很多,相比较 Storm 和 Spark 的流处理,流处理不需要批处理的数据收集时间,也省去; 作业调度的时延。不擅长流式计算流式计算的输入数据是动态的,但是MR 的输入数据集时静态的,不能动态变化。不擅长有向图的计算多个应用存在依赖关系,后一个程序的输入是前一个的输出。MR 不能进行这样的计算,因为每个 MR 结果都会写入到磁盘,会造成大量的 IO,导致性能非常低下。2.讲一下MR的工作
2020-06-29 22:06:11 1072
原创 Hadoop总结以及一些面试问题-HDFS部分
1.Hadoop 1.x 和 Hadoop 2.x 的区别?2.Hadoop 配置文件和Hadoop 集群搭建(1) 配置文件core-site.xmlhdfs-site.xmlmapre-site.xmlyarn.site.xml(2) 集群搭建过程JDK 安装配置 ssh 免密登陆配置hadoop 核心文件格式化 namenode bin/hdfs name - format3.NN,DN,SN的作用与联系?NameNode:存储文件的元数据,如文件名,文件目录结构,文件
2020-06-29 00:28:58 260
原创 leetcode_139. 单词拆分(dp + dfs + 记忆化 dfs )
题目描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。分析:第一感觉是用回溯法做,从字符串 s 开头开始,判断字典中的单词是否匹
2020-06-25 11:14:55 255
原创 Java的HashMap底层实现原理(jdk1.8)
标记:vivo 提前批大数据开发岗问到HashMap底层的实现原理,回答的很烂,所以作此知识点的补充,以后在遇到java 的这些高频知识点,争取能够流利的回答出来。在jdk1.6 1.7中,HashMap 采用位 |桶(容量)+链表实现,即使采用了链表来解决冲突,同一Hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过 key 值查询的效率会很低。而在 jdk 1.8 中 HashMap 采用位桶 + 链表 + 红黑树 实现,当链表长度超过阈值**(8)*
2020-06-10 21:36:53 2297
原创 Array 与 ArrayList ,LinkedList之间的区别,优缺点,以及使用场景
一. Array 与 ArrayList 的区别,以及应用场景的不同之处ArrayList 可以理解为能够自动扩容的 array ,也就是两者的第一个区别:1. 存储空间大小的区别Array 的空间大小是固定的,空间不够时也不能再次申请,所以需要使用之前确定合适的空间大小。ArrayList 的空间是可以动态增长的,当空间不够时,ArrayList 的底层会生成一个新的数组,长度为原数组的 1.5 倍 + 1 ,也就是源码中 newLength = oldarrayLength + (oldarr
2020-06-05 22:37:21 1058
原创 lc_5418. 二叉树中的伪回文路径
5418. 二叉树中的伪回文路径题目描述给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。示例 1:输入:root = [2,3,1,3,1,null,1]输出:2解释:上图为给定的二叉树。总共有 3 条从根到叶子的路径:红色路径 [2,3,3] ,绿色路径 [2,1,1] 和路径 [2,3,1] 。在这些路径中,只有红色和绿色的路径是伪回
2020-05-24 20:49:35 180
原创 lc_5419. 两个子序列的最大点积
5419. 两个子序列的最大点积题目描述给你两个数组 nums1 和 nums2 。请你返回 nums1 和 nums2 中两个长度相同的 非空 子序列的最大点积。数组的非空子序列是通过删除原数组中某些元素(可能一个也不删除)后剩余数字组成的序列,但不能改变数字间相对顺序。比方说,[2,3,5] 是 [1,2,3,4,5] 的一个子序列而 [1,5,3] 不是。示例 1:输入:nums1 = [2,1,-2,5], nums2 = [3,0,-6]输出:18解释:从 nums1 中得到子序列
2020-05-24 20:36:55 211
原创 leetcode_152. 乘积最大子数组
题目描述给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。分析: 动态规划dp_max[i]:以第 i 个元素的结尾的连续子序列的最大乘积, 如果当前的第 i 个元素为正,可以直接乘,如果为负,就不乘,按照这个想法,最
2020-05-18 17:35:26 138
原创 StringBulider&StringBuffer&final&finaly&finallized&==&equals 区别小探
1.String,StringBulider,StringBuffer的区别?2.final,finally,finallized的区别?3. == 与 equals 的区别? 1.String,StringBulider,StringBuffer的区别?可从两个方面说:线程安全和速度。1.1 首先说运行速度: StringBuilder > StringBuffer > ...
2020-04-30 22:00:49 171
原创 leetcode_31_下一个排列
31. 下一个排列题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。要求:必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1分析:首先明白,下一个排...
2020-04-28 11:55:33 105
原创 剑指offer-链表-寻找链表的环的入口
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。分析: 快慢指针设快慢指针,fast,slow,快慢指针初始都指向链表头部,快指针每次走两步,慢指针每次走一步,若链表没环,快指针会走到链表末尾。若链表存在环,那么快慢指针一定会在环内的某个结点相遇,因为快指针每次走两步,比慢指针快一步,所以早晚会赶上慢指针然后相遇。我们设 不含环的链表部分结点数为 a(不...
2020-04-21 21:45:24 144
原创 4.8_阿里笔试试水
水深水浅,一试便知!投简历来的第一次笔试,给了阿里,两道编程题,很凉很清爽!虽然AC了个鹅蛋,但还是有收获的,知道了自己的水平,路漫漫,任重道远,熟悉在线编程的输入输出格式,刷题时,除了Python,也用Java写写,渐渐把java作为自己的主要语言。编程题1:训练游戏:你可以攻击n次,有m个小兵,每个小兵的血量为a,你的攻击范围是b(每次能打到b个小兵,当一次攻击结束,小兵血量为0,便...
2020-04-11 19:17:03 548
原创 leetcode_石头游戏合集
题目描述石头游戏1:亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回...
2020-04-05 16:35:26 771
原创 leetcode_289_生命游戏
题目描述生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;...
2020-04-02 14:57:02 167
原创 leetcde_两数相除
题目描述给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例 1:输入: dividend = 10, d...
2020-03-25 15:42:41 132
原创 leetcode_打家劫舍问题
打家劫舍1题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。分析:dp[i]定义:nums[0,i]的最多的金额集合;状态转移方程:dp[i] = ma...
2020-03-24 17:34:42 245
原创 最大连续子序列
DP - 最大连续子序列和问题的变形给定K个整数的序列{ N1, N2, …, NK },其任意连续子序列可表示为{ Ni, Ni+1, …, Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。现在增加...
2020-02-29 17:04:25 258
原创 算法之排序系列
算法之排序系列昨天参加了我人生中的第一场工作面试,新浪推荐部门实习,略带紧张,忐忑过关,问了两道算法题,一道快排,一道DP(最长上升子序列的长度),在这里重新总结下一些基本的排序算法。数据结构排序的算法可以这样分为八个:快速排序基本思想:挖坑填数 + 分治法从序列中选择一个基准数(pivot),有的书上叫枢轴,至于选哪一个,我们可以自己决定,一般选第一个作为基准数。将序列中所有的数...
2019-11-08 16:10:13 115
原创 leetcode_378. 有序矩阵中第K小的元素
leetcode_378. 有序矩阵中第K小的元素给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。思路:方法一:暴力法,把矩阵的所有元素排...
2019-11-06 13:48:12 177
原创 leetcode_240_搜索二维矩阵 II
240. 搜索二维矩阵 II编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:1.每行的元素从左到右升序排列。2. 每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], ...
2019-10-31 16:01:28 145
原创 leet_code_ 436_寻找右区间
leet_code_ 436_寻找右区间题目描述给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j 在 i 的“右侧”。对于任何区间,你需要存储的满足条件的区间 j 的最小索引,这意味着区间 j 有最小的起始点可以使其成为“右侧”区间。如果区间 j 不存在,则将区间 i 存储为 -1。最后,你需要输出一个值为存储的区间值的数组。...
2019-10-28 19:31:28 113
原创 leetcode_658. 找到 K 个最接近的元素
给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。方法一:删除法从两端遍历数组,比较头尾数组元素与 x 的距离,哪端距离大,哪端数组出栈,直到出栈后的数组长度为k 。class Solution(object): #删除法 def find...
2019-10-24 14:56:42 194
原创 二分查找的边界问题探索
二分查找基本思想:前提条件:序列有序的。过程:首先与序列中间的元素进行比较,如果大于这个中间元素,就在这个当前序列的后半部分查找,如果小于中间元素,则在序列的前部分查找,直到找到或则查找完整个序列为止。二分查找的边界:–边界一般会有两种情况,左闭右闭,左闭右开。–左闭右闭,类似于[left,right],左闭右开 --> [left,right)根据边界的闭合情况,循环体内的初...
2019-10-23 20:13:51 245
原创 leetcode_300.最长上升子序列
分析:动态规划定义:dp[0,…i-1] ,dp[i]定义为以num[i] 元素结尾的子序列的最大长度。例如:状态转移方程:dp[i] = max( 1 + dp[j] if i > j and nums[i] > nums[j])class Solution(object): def lengthOfLIS(self, nums): dp = [1]...
2019-10-23 15:38:32 130
原创 leetcode_11. 盛最多水的容器
‘’’给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。 目标:找出最大的一组(i,j), 是的Area 最大!Area =max(min(heig...
2019-10-13 10:26:28 132
原创 leetcode_341. 扁平化嵌套列表迭代器
题目描述给定一个嵌套的整型列表。设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的项或者为一个整数,或者是另一个列表。python# """# This is the interface that allows for creating nested lists.# You should not implement it, or speculate about its ...
2019-10-11 10:45:43 111
原创 leetcode227.基本计算器ii
实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。分析:直接法,更具运算法则,先计算乘除法, 在计算加减法。class Solution(object): def calculate(self, s): """ :type s: str ...
2019-10-10 09:50:33 112
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人