首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【大厂面试演练】听说你很懂ZooKeeper?那我考考你

每日分享大厂面试演练,感兴趣就关注我吧❤️ 面试官:知道ZooKeeper有什么应用场景吗 嗯嗯,主要有这几种。 数据发布/订阅。可以用来实现配置中心 命名服务。...每一个服务器是一个子节点,可以用来检测到集群中机器的上/下线情况 分布式锁 面试官思考中… 面试官:你挑一个你比较熟悉的场景讲讲 嗯嗯好的,那我讲下分布式锁。...是这样的,ZooKeep的获取锁时会在/exclusive_lock节点下创建子节点,如果创建成功则获得锁。如果失败,则客户端会在该节点注册一个子节点变更的Watcher监听。...每次读、写请求同样是创建子节点,是一个类似于“/shared_lock/Hostname-请求类型-序号”的临时顺序节点。 接着会获取子节点列表,同时注册Watcher监听。...面试官思考中… 面试官:你刚刚说到Kafka生产者负载均衡,那消费者负载均衡知道吗 哦哦说欠了,消费者负载均衡有两方面。 一方面,每一个消费者服务器都会在ZooKeeper创建消费者节点。

199108

动态规划问题之乘积为正数的最长子字符串问题

所以我们沿用一贯的思路,创建数组 f[i]表示:以i位置为结尾的所有子数组中乘积为正数的最长子数组的长度  有同学可能会有这样的疑问:为什么创建的数组名是f,不是我们经常使用的dp表呢??...2.状态转移方程 刚刚,我们凭借这做这类题目的经验,创建了数组,接下来,就是我们深挖题目的时候了。 我向大家抛出这样一个问题:f[i]和f[i-1]之间有什么关系吗?...B.nums[i]<0 这时,我们就需要以下标为i-1元素为结尾的子数组乘积为负数,这时,我们的创建的数组f就无法实现这个功能了,因此,我们就需再创建一个g表!!!...g[i]表示:以i为结尾的所有子数组中乘积为正数的最大值 然后依据nums[i]>0的逻辑,是不是该推导出公式:f[i]=g[i-1]+1?是这样吗??我们仔细思考一下,错错错!!"why"?...因为如果g[i-1]=0,意味着:以下标为i-1的元素结尾的所有子数组中,乘积都是正数,然后代入我们自己推导出来的公式,得到f[i]=1,但我们一想:这种情况,f[i]应该为零,所以错误就产生了,我们可以用三目表达式解决这个问题

9510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《我们一起进大厂》系列-Zookeeper基础

    ZooKeeper分布式锁1.1 排他锁实现分布式锁面试官:知道Zookeeper有什么应用场景吗?...可以用来实现配置中心。命名服务。类似于UUID,可以生成全局唯一的ID。集群管理。每一个服务器是一个子节点,可以用来检测到集群中机器的上/下线情况。分布式锁。...ZooKeepr获取锁时会在/exclusive_lock节点下创建子节点,如果创建成功则获得锁。...当要释放锁时,Zookeeper会删除该子节点,此时/exclusive_lock节点下就有空位了。Watcher监听则通知客户端可以重新创建子节点来获得锁资源。...另外共享锁的释放锁和排他锁都是一样的,只需要删除所创建的子节点就可以。1.3 共享锁羊群效应面试官:有没听说过共享锁的羊群效应?

    2511210

    宕机后,Redis如何实现快速恢复?

    save:在主线程中执行,会导致阻塞; bgsave:创建一个子进程,专门用于写入 RDB 文件,避免了主线程的阻塞,这也是 Redis RDB 文件生成的默认配置。...否则,所有写操作都得等到快照完了才能执行,性能一下子就降低了。 快照时数据能修改吗? 在给别人拍照时,一旦对方动了,那么这张照片就拍糊了,我们就需要重拍,所以我们当然希望对方保持不动。...你可能会想到,可以用 bgsave 避免阻塞啊。这里我就要说到一个常见的误区了,避免阻塞和正常处理写操作并不是一回事。...另一方面,bgsave 子进程需要通过 fork 操作从主线程创建出来。虽然,子进程在创建后不会再阻塞主线程,但是,fork 这个创建过程本身会阻塞主线程,而且主线程的内存越大,阻塞时间越长。...如果频繁 fork 出 bgsave 子进程,这就会频繁阻塞主线程了。那么,有什么其他好方法吗?

    62520

    最新一期的马拉松在线互动授课答疑精选

    肉眼可见两者是不同的呀 24这样写默认统计的是TRUE吗?这里能不能加个什么条件让这条命令统计FALSE? 没错,你可以理解成,T是1,F是0,所有的1加起来的长度。第二个问题可以用“!”取反集。...配置gatk它又出来这个错误 参数没写对,你可能是要用等号,gatk也可以用conda安装的。...可以考虑新建一个环境重新安装一遍软件 或者你单独创建个环境给multiqc也不是不行唯一的问题就是每次使用multiqc都要切到特定环境。...63为什么我们的表达矩阵要使用外显子这个feature,而不使用gene呢,这样得到的表达矩阵还需要将同一个基因的所有外显子的表达量相加,才是同一个基因的表达量吧?...是的,使用外显子这个feature,而不使用gene。所以,这样得到的表达矩阵还需要将同一个基因的所有外显子的表达量相加,才是同一个基因的表达量,因为默认基因的内含子区域定量是不需要的。

    29130

    对线面试官 - 网络面试之进程间的通信

    面试官:能简单聊聊进程间的通信方式吗? 派大星:可以的,主要方式为:管道、命名管道、消息队列、共享内存。 面试官:可以简单介绍一下这些通信方式吗? 派大星:好的。...首先说一下: 管道(pipe): unix操作系统里面,有一个fork操作,可以创建进程的子进程,或者说是复制一个进程完全一样的子进程,共享代码空间,但是各自有独立的数据空间,不过子进程的数据空间是拷贝父进程的数据空间的...所以可以用命令管道来解决这个问题。 之前的管道是没有名字的,所以必须是有父子关系的进程才可以使用。但是命名管道是有名字的。这个命名管道相当于是有一个名字的文件,是有路径的。...面试官:不错,你知道线程见如何切换吗?简单聊聊? 派大星:这个了解一些。简单的讲就是一个进程的多个线程间切换的时候就涉及到了上下文切换。

    14710

    去面试,竟然问我创建线程有哪几种方式!你这是在怀疑我的智商?

    Override public void run() { System.out.println("自己实现的run-1"); } } 面试官:嗯,那除了这两种,还有其他创建线程的方法吗...这些简单的问题难不倒这哥们,于是他想到了 Java5 之后的Executors,Executors工具类可以用来创建线程池。...面试官:你写的两种创建线程的方式,都涉及到了run()方法,你了解过Thread里的run()方法具体是怎么实现的吗?...亲爱的读者朋友,你们知道为什么吗?你们可以先思考一下。...其实这个答案很简单,我们来分析一下代码便知:其实是 new 了一个对象(子对象)继承了Thread对象(父对象),在子对象里重写了父类的run()方法;然后父对象里面扔了个Runnable进去,父对象中的

    69610

    Rust FFI 编程 - nix crate

    [dependencies] nix = "0.17.0" 用 nix 如何创建一个子进程 我们用 nix 库重写 libc 文章中创建一个子进程的示例,代码如下: use nix::unistd::...("My parent thread: {}", getppid()); } Err(errno) => { // fork 创建子进程失败...; } } } fork/kill示例 熟悉 POSIX 规范的话,其中的fork()函数可以用来创建一个新的进程(子进程),而kill()函数可以用来向一个或一组进程发送信号...我们知道fork()函数如果执行成功,则向子进程返回 0,并将子进程的进程 ID 返回给父进程。否则,将向父进程返回 -1,不创建子进程,并设置errno来标识错误。...这时在随后的程序中关闭子进程kill(child, SIGKILL);,你知道进程 ID 为 -1 时会发生什么吗?

    1.7K20

    ZooKeeper 基础知识总结

    如果在持久顺序节点类型的父节点创建子节点,ZooKeeper会为该子节点名加上一个数字后缀来维护子节点的顺序。 临时节点:临时节点比较特殊,它的生命周期是和客户端会话绑定在一起的。...另外大家记住一点,临时节点只能作为叶子节点,是不能在临时节点下面创建任何子节点的。...可以用来实现配置中心。 命名服务。类似于UUID,可以生成全局唯一的ID。 集群管理。每一个服务器是一个子节点,可以用来检测到集群中机器的上/下线情况。 分布式锁。...ZooKeepr获取锁时会在/exclusive_lock节点下创建子节点,如果创建成功则获得锁。...当要释放锁时,Zookeeper会删除该子节点,此时/exclusive_lock节点下就有空位了。Watcher监听则通知客户端可以重新创建子节点来获得锁资源。

    22964

    Maven详解(八)------ 继承和聚合

    解决办法:   将那个 jar 包版本统一提取到 “父" 工程中,在子工程中声明依赖时不指定版本,以父工程中统一设定的为准,同时也便于修改。 操作步骤:   ①、创建父工程 ?    ...我们可以通过自定义标签,然后在标签里面填写常量,这种方法不仅可以用来管理版本号,还可以用来管理比如设置某种编码等等。  ...我们在用Maven 管理项目的时候,通常为创建多个 Maven 工程,也就是一个项目的多个模块。但是这样分成多个模块了,当我们进行项目打包发布的时候,那么要每一个模块都执行打包操作吗?...第一步:创建聚合工程(注意聚合工程的打包方式也必须为 pom,通常由 上面所讲的父工程来充当聚合工程) ? 第二步:创建子工程:业务层     ①、选择 Maven Module ?      ...第三步:创建子工程:表现层和持久层     创建步骤和前面一样,注意表现层打包方式我们要选择 war,因为要发布到 tomcat 容器运行。

    1.1K100

    Linux:进程替换

    比方说我们想用fork创建一个子进程去帮助我们完成一个工作,这个工作我们需要封装成一个函数去使用,但难道我们每次都要自己写一个函数吗?或者说子进程一定要用我父进程的代码吗? ...这就涉及到原理层了 问题1:子进程执行了ls这个可执行程序的命令,是有创建新的子进程吗??...所以并没有创建新的子进程,只是将该子进程的代码和数据替换了,并且内核数据结构PCB并没有释放,而仅仅只是修改了某些字段的内容。 问题2:子进程的代码和数据被替换了,为什么父进程还是执行原来的代码??...所以程序替换后,子进程跑的是一份全新的代码。(就有点像你的第二人格出现,但是你已经不记得自己的第一人格做过什么或者说过什么) 问题3:可是数据发生写时拷贝我可以理解,那代码也可以发生写时拷贝吗??...1.5.4 子进程环境变量的处理 1、新增环境变量——>putenv          如果我们想给子进程创建新的环境变量,之前我并不想在bash上搞,因为在bash上搞的话所有进程都会被影响。

    13710

    Redis 用的很溜,了解过它用的什么协议吗?

    那面试又问了,你知道 AOF 持久化之后的文件是什么格式吗? 答:好像就是文本文件吧? 好,文本文件,那你知道它有什么规则吗?或者说,它和 Redis 的协议有什么关系吗?..../ # 900秒内,如果至少有1个key发生变化,就会自动触发bgsave命令创建快照 save 900 1 # 300秒内,如果至少有10个key发生变化,就会自动触发bgsave命令创建快照...; 4、子进程开始进行持久化工作,对现有数据进行完整的快照存储; 5、子进程完成操作后,通知父进程; ?...因为bgsave每次运 行都要执行fork操作创建子进程,属于重量级操作,频繁执行成本过高。...RESP 协议 Redis客户端与服务端通信,使用 RESP 协议通信,该协议是专门为 Redis 设计的通信协议,但也可以用于其它客户端-服务器通信的场景。

    46510

    由浅入深的了解进程(2)

    1、5、3、终止进程 ctrl+c:能够直接终止进程,前面介绍过 kill -9 (PID):也可以用来直接杀掉进程 1、6、进程创建代码方式 现在主要重点讲述一下办法,后面再重新回到这个问题的时候再讲解原理...fork: 创建子进程 对于这样的一个fork来说,当开始之后还是会出现两个hello world的,因为此时还有了一个子进程(fork之后,父子代码共享),当我们运行的时候,也能够通过ps观察到,...(无法创建子进程的时候) 这样的话,我们能够利用fork返回值来进行条件语句的运行。这样我们就能够实现子进程于父进程实现不同的代码。...首先我们想,当一个函数的时候真正的返回了也就是说明,fork在运行的时候已经创建结束了一个子进程了,并且子进程也已经可以被调度了。...那return不也是代码吗,其实fork后的代码共享从宏观上的理解是再main函数中运行完了才共享,但是其实实在fork函数内部构建结束子进程就已经共享了,所以最后返回的时候才是返回两个值。

    10010

    MySQL关于子查询经典面试题

    面试官提出的问题面试官:“在MySQL查询优化中,我们经常听到说子查询(Subquery)的效率相对较低。你能详细解释一下为什么子查询的效率会低吗?并提供一些具体的例子来说明。”...临时表和文件排序MySQL在处理子查询时,可能会创建临时表来存储中间结果,并对这些结果进行排序。这些操作都会增加查询的复杂性和时间开销。...这种方法通常比子查询更高效,因为它避免了多次扫描表和创建临时表的操作。...创建适当的索引:确保在子查询中涉及的列上创建了适当的索引,以加速查询。避免在子查询中使用函数或计算:在子查询中避免使用函数或计算,因为这可能会阻止MySQL使用索引。...Join查询可以无限叠加吗?MySQL对Join查询有什么限制吗?面试官提出的问题面试官:“在MySQL中,我们知道Join查询可以用来连接多个表以获取相关数据。那么,Join查询可以无限叠加吗?

    6300

    《深入浅出SQL》问答录

    给数据库、表和列命名时有什么注意事项吗? A:创建具有描述性的名称通常有不错的效果。有时候要多用几个单词来命名。所有名称都不能包含空格,所以使用下划线能够让你创建更具描述性的名称。...DATATIME(时间和日期):10:30 a.m. 9/29/2020 如果想查看表的数据结构,可以使DESC语句 DRAP TABLE 语句可以用于丢弃表,谨慎使用!...非关联子查询 如果子查询可以独立运行且不会引用外层查询的任何结果,即称为外层查询。 上面都是 有时候最好创建测试数据库来尝试各种查询方式,比较查询运行时间。 联接比子查询更有效率。...一般而言,子查询必须返回一个值,使用IN是例外情况。 所以说,子查询可以放在子查询里吗? A:of couse. 据说使用子查询能解决的事情,用联接也可以?是这样吗? A:不然呢?...如果创建了视图,就不需要重复创建复杂的联接与子查询。视图隐藏了子查询的复杂性。当SQL其他编程语言结合后,把视图加入程序代码会比加入冗长、复杂、充满联接的查询更简单。

    2.9K50

    Android为什么不能在子线程更新UI

    如果不做这个校验,是不是我也可以正常在子线程更新UI 但是google为什么要这样去设计呢 ViewRootImp是在onActivityCreated方法后面创建的吗 为什么一定需要checkThread...呢 那为什么不加锁呢 为什么一开始在Activity的onCreate方法中创建一个子线程访问UI,程序还是正常能跑起来呢 Android中子线程真的不能更新UI吗 保证上述条件1成立不就可以避免checkThread...为什么还需要开启消息循坏 使用子线程更新UI有实际应用场景吗 Android为什么不能在子线程更新UI? // Android中为什么子线程不能更新UI?...ViewRootImp是在onActivityCreated方法后面创建的吗 // ViewRootImp是在onActivityCreated方法后面创建的吗?...等待垂直同步信号回来之后执行 使用子线程更新UI有实际应用场景吗 // 使用子线程更新 UI 有实际应用场景吗?

    1.5K20

    拒绝加班:巧用前端电子表格中构建公式树

    还在为满屏的公式而“内牛满面”吗?还在为长串的公式解析而发愁吗? 还在定位错误的公式而苦恼吗?上班要写代码,加班还要分析这又长又臭的公式。你的发际线还好吗? 本葡萄来拯救你的发际线啦!...这里就可以用到前面说的,利用SpreadJS的计算引擎,把分析交给机器来做,分析完成之后,可以通过SpreadJS自身的形状功能来绘制一个清晰明了的公式树。...不仅快且稳,重要的是可以早点下班,他不香吗? ok,那我们来看看效果。...其余代码可以简单理解为创建命令的“模板”。...在这个if-else中,如果节点是父节点,则通过连接器型装将子节点相连接,如果没有子节点则无需连接。在creatNodeTree方法中,定义的节点信息,通过拼接的方式,将节点信息设置在对应的矩形上。

    71830
    领券