• 美团-大数据开发实习面试


    一面

    算法问了4道都比较简单,分别考的二分,递归,双指针以及动态规划。

    1.二分搜索

    704. 二分查找

    力扣原题,注意边界条件,以及是否能取等号即可。

    2.二分搜索(递归实现)

    704. 二分查找

    代码如下:

    1. public int search(int[] nums, int left, int right, int target) {
    2. while (left <= right){
    3. int mid = left + (right - left) / 2;
    4. if (nums[mid] == target){
    5. return mid;
    6. }else if (nums[mid]< target){
    7. return search(num, mid + 1, right, target);
    8. }else{
    9. return search(num, left, mid - 1, target);
    10. }
    11. }
    12. return -1;
    13. }

     3.双指针

    递增数组,判断数组中是否存在两个数之和为target,思路是双指针,一个begin,一个end,每次移动一个指针。

    167. 两数之和 II - 输入有序数组

    代码如下:

    1. public int[] twoSum(int[] numbers, int target) {
    2. int p1 = 0;
    3. int p2 = numbers.length - 1;
    4. while (p1 < p2){
    5. int sum = numbers[p1] + numbers[p2];
    6. if (sum == target){
    7. return new int[]{p1 + 1, p2 + 1};
    8. } else if (sum < target){
    9. p1++;
    10. } else {
    11. p2--;
    12. }
    13. }
    14. //无解
    15. return new int[]{-1, -1};
    16. }

     4.最长递增子序列LIS(动态规划)

    300. 最长递增子序列

    DP代码如下:

    1. public int lengthOfLIS(int[] nums) {
    2. int dp[] = new int[nums.length];
    3. dp[0] = 1;
    4. int maxSeqLen = 1;
    5. for (int i=1; i<nums.length; i++) {
    6. //初始化为1
    7. dp[i] = 1;
    8. for (int j = 0; j <= i; j++) {
    9. //对dp[i]进行更新,严格递增
    10. if (nums[i] > nums[j]){
    11. dp[i] = Math.max(dp[i], dp[j]+1);
    12. }
    13. }
    14. maxSeqLen = Math.max(maxSeqLen, dp[i]);
    15. }
    16. return maxSeqLen;
    17. }

    最优时间复杂度为O(nlogn)

    写完四道算法之后,开始问项目,问了大概半小时项目,简单的问了一下八股文。

    八股文

    1.MapReduce的整个过程原理。

    2.Spark参数executor.memory与executor.memoryOverhead的区别。

    然后简单介绍了一下美团平台做的啥业务,balabala一堆,也不太想听。

    二面

    项目聊了40分钟,中间讲了一下他们公司做的业务。

    然后问我大数据输入流下Flink程序如何优化(他们那边流程序一次跑一天),我说先选择stateBackend,选rocksdb,之后要进行黑盒参数优化。

    问了我Spark程序核内比如何设置比较合理,怎样避免OOM。我说核内比的大小是由硬件环境以及应用程序的特征决定的,基于经验的话,我们实验室的鲲鹏ARM机器上(288核 360G内存),1:1.5的核内比就可以,在华为云(192核 300G内存)的X86机器上, 1:3以及1:4比较合适。

    又问了我遇见过executorMemoryOverhead空间不足报错的问题没,我说没有,只遇见过参数不合理的时候,超过了yarn分配的资源上限导致报错,并未遇见过不足的问题。

    之后问我大数据集下,应该调整哪些配置参数的值来更好地进行Spark SQL程序的优化,我回答了spark.sql.shuffle.partition以及spark.broadcast.threshold。

    又问了我Spark程序优化以及Flink程序优化的这些参数大概选了多少个,选了哪些,以及是如何选择出来的。

    八股文没有问就,面试官让我写了一道SQL以及一道算法,八股文没有问。

    SQL,聚合排序以及Join的操作,我说不会写SQL,就说了一下思路。

    算法:两数求和(逆序链表)

    2. 两数相加

    考察的链表基础知识,整一个carry进位即可,按照顺序求解。

    然后又介绍了一下他们公司的业务balabala,问我的意向之类的。

  • 相关阅读:
    docker构建镜像上传到DockerHub
    2023 年高教社杯全国大学生数学建模竞赛题目 B 题 多波束测线问题
    项目实战第十五讲:使用职责链模式实现类目属性规则引擎
    mac for m1(arm):安装redis的四种方式(本机安装、homebrew安装、虚拟机安装、docker安装)
    git常用命令
    python查看自己安装的所有库并导出
    Qt (QFileDialog&QColorDialog&QFontDialog) 对话框实战
    Java集合(二)
    MySQL:表的增删查改
    【Nginx】Windows平台下配置Nginx服务实现负载均衡
  • 原文地址:https://blog.csdn.net/sinat_38079265/article/details/125619439