专科生作业帮大数据面经(已拿offer,附详细答案)

专科生作业帮大数据面经(已拿offer,附详细答案)

这位同学是学习群的同学,之前已经写了一篇阿里一面的面经:#专科生阿里大数据一面面经「已过」「附详细答案」

如今又收到了作业帮的大数据offer,他是甘肃职业学校的专科生,而且是罕见的警犬专业,但他学习非常刻苦认真,值得我们学习!


以下答案由我重新整理:


一面

**

2.数据库索引结构有哪些?
(1)生成索引,建立二叉查找树 生成索引
(2)建立B-Tree 生成索引
(3)建立B -Tree 生成索引
(4)建立Hash,基于InnoDB和MyISAM的Mysql不显示支持哈希(5) 位图数据结构,BitMap,少量主流数据库使用,如Oracle,mysql不支持;


3.紧接着又问了如何定位并优化慢查询sql?
(1)根据慢日志定位慢查询SQL 
(2)使用explain等工具分析SQL 
(3)修改SQL或者尽量让SQL走索引以优化查询效率

   
4.索引是建立的越多越好吗?
(1)数据量小的表不需要建立索引,建立会增加额外的索引开销;(2)数据变更需要维护索引,因此更多的索引意味着更多的维护成本;(3)更多的索引也意味着需要更多的空间


5.说一下你知道的垃圾收集算法和垃圾收集器

垃圾收集算法(垃圾回收的方法论):
    1.复制算法:此种算法是将空间分成两部分,每次使用其中的一部分。在垃圾回收时,将正在使用的内存中存活的对象复制到未使用的内存中,然后清除正在使用的内存。这种算法不会产生碎片,但会造成空间的利用率低。        2.记清除法:此种算法是将垃圾收集分为两个阶段,标记阶段和清除阶段。标记阶段是将所有需要回收的对象进行标记,然后标记结束后,对标记的对象进行回收。这种算法会产生大量碎片,效率低下。

    3.标记整理法:此种算法是将所有需要回收的对象进行标记后,将所有存活的对象移到另外一端,其他不需要保留的全部清理。此种算法解决了标记清除法所产生的碎片问题。

    4.分代法:根据对象生命周期的长短进行分块,在根据每块区间不同的特点,使用不同的算法进行垃圾回收,从而提高垃圾回收效率。比如:Java虚拟机中的堆采用了这种方法分成了新生代和老年代,然后对于不同的代采用不同的垃圾回收算法。新生代采用了复制算法,老年代采用了标记清除法。

    5.分区法:将空间分成连续多个不等的小区间,每个区间单独使用,独立回收。优点是一个可以控制多个区间的回收。

    6.引用计数法:此种算法是对对象设置一个引用计数器,每增加一个变量对它的引用,计数器就加1,反之,减1。只有当计数器的值为0时,该对象才会被回收。该算法简单,也有缺点,对对象操作频繁,增加了系统消耗;也无法处理循环引用的情况。

垃圾收集器(垃圾回收的具体体现):
1.新生代:Serial、ParNew、parallel Scavenge

2.老年代:Serail old、ParNew old、CMS

========================================

1.新生代回收器的详细介绍:

a.Serial:它是一个单线程的垃圾回收器,单线程的意义是:只会使用一个CPU或者一条垃圾收集线程去完成垃圾收集工作。而在它进行垃圾收集工作的时候,其他线程必须暂停,直到垃圾收集结束。

b.ParNew:它是serail的多线程版本,基本操作和Serial一样。该收集器一般和CMS搭配工作。

c.parallel Scavenge:此收集器的目的是达到一个可控制的吞吐量。

吞吐量=运行用户代码的时间/(运行用户代码的时间 垃圾回收的时间)

d.GC自适应策略:JVM会根据当前系统运行情况收集性能监控情况,动态调整这些参数以提供最适合的停顿时间或者吞吐量。

=======================================老年代垃圾收集器:1.Serial Old:是Serail 的老版本,也是单线程收集器,该收集器主要是给Client模式下的虚拟机使用的。Note:分代收集算法:新生代采用复制算法,并暂停所有用户线程。     老年

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据开发中,Shell脚本是非常常用的工具。以下是一些常见的面试问题和答案: 1. 问: 如何执行一个已经创建的Sqoop job? 答: 可以使用以下命令执行Sqoop job: sqoop job -exec job名称 。 2. 问: 你使用过哪些Shell脚本? 答: 我使用过awk、sed、cut和sort等命令来处理文本数据。我还写过一些用于集群启动、脚本分发、数据导入导出以及数仓层级内部导入的Shell脚本 。 3. 问: 如何通过Shell脚本杀死远程服务器上的进程? 答: 有两种方法可以杀死远程服务器上的进程。一种是使用以下命令: ssh $i “ps -ef | grep 进程名 | grep -v grep |awk ‘{print $2}’ | xargs -n1 kill”。另一种是使用以下命令: ps -ef | awk ‘/进程名/ && !/awk/ {print $2}’ | xargs -n1 kill -9 。 4. 问: Shell中单引号和双引号有什么区别? 答: 在Shell脚本中,双引号可以保留变量的值并将其扩展,而单引号则会将变量视为普通的字符串。双引号内的特殊字符会被解释,而单引号内的特殊字符会被视为字符串的一部分。此外,双引号内可以使用转义字符来表示特殊字符,而单引号不支持转义字符 。 希望以上回答对你有所助。如果你有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [shell编程之大数据面试题](https://blog.csdn.net/qq_27924553/article/details/111938876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [大数据高频面试题——linux&shell-详解](https://blog.csdn.net/zlmldylinke/article/details/113886037)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值