实习校招

腾讯测试开发岗实习面试2018

2018-04-23  本文已影响0人  莫冰先生

话不多说 一首凉凉送给自己 自己学后端 然后腾讯投的测试开发岗位,今天面完发现问的挺难得呀 =-=

关于实习

关于项目

介绍自己的项目,这个是每个公司都会让你介绍的(我觉得这个要背一背,毕竟一个项目这么多东西,需要总结一下),

问的问题

  1. java新生代 老年代 持久代
    虚拟机的堆内存 首先堆内存分为三个代 年轻代 老年代 持久代
  1. 常量和变量的内存分配
  2. new 一个对象 它的内存分配机制 在内存的哪一块,分配多大(我都不知道想问什么,一顿瞎扯 凉凉)
  3. 说一下socket吧,(socket没怎么学,java后端逻辑不怎么用到socket,他说这个挺重要的,我曹。。。凉)
  4. 讲一下Redis吧(扯)

手写代码。。

1.找到众数
给一个int[] {1,2,3,4,5,6,1,1,22,3,14,...}找到出现次数最多的数 和次数 然后就是考虑优的复杂度
第一想到就是map来搞,然后没有考虑到top k ,然后提醒我 我就说。。。 然后他说可以动态更新 找到最大的。。没听懂。。

import java.util.*;
public class What {

    public static void main(String[] args) throws Exception {
        int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 1, 2, 2, 3, 4, 5};
        int n = arr.length;

        List<Integer> modalNums = getModalNums(arr);

        System.out.println(modalNums);
    }

    public static List<Integer> getModalNums(int[] arr) {
        int n = arr.length;

        if (n == 0) {
            return Collections.EMPTY_LIST;
        }

        if (n == 1) {
            return Arrays.asList(arr[0]);
        }

        Map<Integer, Integer> freqMap = new HashMap<>();
        for (int i = 0; i < n; i++) { // 统计数组中每个数出现的频率
            Integer v = freqMap.get(arr[i]);
            // v == null 说明 freqMap 中还没有这个 arr[i] 这个键
            freqMap.put(arr[i], v == null ? 1 : v + 1);
        }

        // 将 freqMap 中所有的键值对(键为数,值为数出现的频率)放入一个 ArrayList
        List<Map.Entry<Integer, Integer>> entries = new ArrayList<>(freqMap.entrySet());
        // 对 entries 按出现频率从大到小排序
        Collections.sort(entries, new Comparator<Map.Entry<Integer, Integer>>() {
            @Override
            public int compare(Map.Entry<Integer, Integer> e1, Map.Entry<Integer, Integer> e2) {
                return e2.getValue() - e1.getValue();
            }
        });

        List<Integer> modalNums = new ArrayList<>();
        modalNums.add(entries.get(0).getKey()); // 排序后第一个 entry 的键肯定是一个众数

        int size = entries.size();
        for (int i = 1; i < size; i++) {
            // 如果之后的 entry 与第一个 entry 的 value 相等,那么这个 entry 的键也是众数
            if (entries.get(i).getValue().equals(entries.get(0).getValue())) {
                modalNums.add(entries.get(i).getKey());
            } else {
                break;
            }
        }

        return modalNums;
    }
}
  1. 海量log怎么持久化到数据库

老师问:比如王者荣耀这个游戏 |game|name|creattime| ...等字段 然后每5秒刷一个延迟记录一分钟就是12个 |100|22|99|22|44|.....| 然后一共有10g这种log,然后如何持久化到数据库中用来做其他的处理分析

上一篇 下一篇

猜你喜欢

热点阅读