匿名吐槽 最近的面试问的问题质量越来越差了。。。

匿名 · 2018年06月14日 · 最后由 匿名 回复于 2018年06月21日 · 2311 次阅读

本来想期待面试官问的优质问题,
1.问线程的基本概念,却没有问相关 countdownLatch 和 notify wait 的实现差别, volatile 关键字和原子类的使用区别。
2.线程池的概念,却没有问相关 ArrayBlockingQueue、LinkedBlockingQueue 。
3.锁的基本概念,却没有问相关类锁和对象锁的使用场景。
4.jvm 相关问题,却没有问相关 ParallelGC ParallelOldGC CMS 回收器。

面试官有 10 年测试经验,但技术能力真的很糟糕,问的问题都很浅。我故意回答错误,他也没有纠正,本来有所期待,但心一沉,感觉没前途。

共收到 39 条回复 时间 点赞

陈独秀同志,你坐下写道题.我最近也在面试,面试题里有一道题是这样的 给出一个 int 类型的数组,让统计出数组中每个数字出现的个数?

你那么牛 B 怎么不去面试开发呢。
发个这个还匿名?

我是一楼,当时我的思路是来个循环嵌套,里面循环去拿外层循环的数和数组中所有数组对比一样就 +1,然后放在 map 集合里面.最后面试官问题有没有考虑过 时间复杂度?大佬你这么厉害,这个题回答下.

python 的话可以直接用 Counter 吧,java 不是太清楚

匿名 回复

我不是楼主。一楼的问题,上网一查随便就出来了。。。。。请问面试可以上网查吗

社区的脉脉既视感……运营小姐姐卖萌瞎扯,一大拨当真的,然后活跃就上去了,是这样吗?

进来社区半天发现,现在的社区和一年前的画风天差地别

1.countdownLatch 是实时通知,notify 不会释放监控权,所以写 wait 方法的线程需要先 start
2.ArrayBlockingQueue 是自定义线程中有序队列

ThreadPoolExecutor pool = new ThreadPoolExecutor( 
            1,              //coreSize 首先会加载的线程
            2,              //MaxSize 最大装载的线程
            60,             //60
            TimeUnit.SECONDS, 
            new ArrayBlockingQueue<Runnable>(3)         //指定一种队列 (有界队列)容量  除了coreSize运行的任务,其他任务会分配到队列中
            , new Rejected()
            );

3.类锁和对象锁区别就是 synchronized 有没有加 static 关键字。

我觉得除了 jvm 那道,其他 lz 所涉及的问题都是 java 基础,所以并没必要喷 lz。面试官可能主要是做功能测试和管理,技术涉及较少,客观意见,少喷为妙!

这样的帖子不用动脑子,随便说,所以回帖有数量;

一楼的问题是剑指 offer 的题目:

public class Solution {
    public static int GetNumberOfK(int[] array, int k) {

        int count = 0;

        if (null != array && array.length > 0) {

            int first = GetFirstK(array, k, 0, array.length - 1);
            int last = GetLastK(array, k, 0, array.length - 1);

            if ((first > -1) && (last > -1)) {
                count = last - first + 1;
            }
        }

        return count;
    }

    /**
     * 递归求解第一个k出现的位置
     * 
     * @param array
     * @param k
     * @param start
     * @param end
     * @return
     */
    public static int GetFirstK(int[] array, int k, int start, int end) {

        if (start > end) {
            return -1;
        }

        int mid = (start + end) / 2;
        int midData = array[mid];

        if (midData == k) {
            if ((mid >= 1 && array[mid - 1] != k) || mid == 0) {
                return mid;
            } else {
                end = mid - 1;
            }
        } else if (midData > k) {
            end = mid - 1;
        } else {
            start = mid + 1;
        }

        return GetFirstK(array, k, start, end);
    }

    /**
     * 递归求解最后一个k出现的位置
     * 
     * @param array
     * @param k
     * @param start
     * @param end
     * @return
     */
    public static int GetLastK(int[] array, int k, int start, int end) {

        if (start > end) {
            return -1;
        }

        int mid = (start + end) / 2;
        int midData = array[mid];

        if (midData == k) {
            if ((mid + 1 < array.length && array[mid + 1] != k) || mid == array.length - 1) {
                return mid;
            } else {
                start = mid + 1;
            }
        } else if (midData > k) {
            end = mid - 1;
        } else {
            start = mid + 1;
        }

        return GetLastK(array, k, start, end);
    }
}
private static void countSameNumber1(int[] number){  
        HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();  
        for(int i =0;i < number.length;i++){  
            if(!hm.containsKey(number[i])){  
                hm.put(number[i],1);  
            }  
            else{  
                hm.put(number[i],(hm.get(number[i]))+1);  
            }  
        }  
        for(Map.Entry<Integer,Integer> entry:hm.entrySet()){  
            System.out.println(entry.getKey() + "出现了" + entry.getValue() + "次");  
        }  
    } 

嗯,测试以后都面试这样的题目,最好一上来就是手写红黑树这样的面试题,才能提现测试的技术水平

所以你的目的是为了吐槽这家公司还是为了装逼?

好像在哪里见过,像复制粘贴的

这匿名区越来越有意思了

匿名 回复

所以你在面试的时候测试下百度的搜索推荐功能?

面试官一般不会纠正错误

14 楼太搞笑了😂

拿个剑指 offer 的题目就出来装,我实习的时候就是这题目,全打上来了

匿名 回复

666666666666666666

面试者和被面试者原来是博弈的过程,受教了。传统面试官都是高高在上的感觉,有时候随便忽悠面试者不懂装懂,面试者就得乖乖的老实交代自己情况,看来我们有时候也得试探下面试官。哈哈

匿名 回复

空间换时间啊,遍历一遍 O(n)

我是来答 1 楼的。

int_list = [1,123,12345,789,1235]
str_list = str(int_list)
s = '*'.join(str_list)
li = s.split('*')
for i in set(li):
    if i.isdigit():
        print('%s 出现了%d 次!'%(i, li.count(i)))

不作评价,有点矛和盾的意味,一如薛定谔的猫。面试开始之前,双方都不知对方深浅,浅问题、深作答,深问题、巧作答。不喜勿喷,我就是过路而已。(因为大会的事情,社区最近感觉没啥干货😒

public static Dictionary<int, int> V(int[] IntArray)
{
    Dictionary<int, int> IntDictionary = new Dictionary<int, int>();
    Array.ForEach(IntArray, (Int) => { IntDictionary[Int]++; });
    return IntDictionary;
}//Dictionary<int, int> V(int[] IntArray)
匿名 回复
public static Dictionary<int, int> V(int[] IntArray)
{
    Dictionary<int, int> IntDictionary = new Dictionary<int, int>();
    Array.ForEach(IntArray, (Int) => { if (IntDictionary.ContainsKey(Int)) { IntDictionary[Int] = IntDictionary[Int] + 1; } else { IntDictionary[Int] = 1; } });
    return IntDictionary;
}//Dictionary<int, int> V(int[] IntArray)

写太快,sb 了下

匿名 回复
public static Dictionary<int, int> V(int[] IntArray)
{
    Dictionary<int, int> IntDictionary = new Dictionary<int, int>();
    Array.ForEach(IntArray, (Int) => { IntDictionary[Int] = IntDictionary.ContainsKey(Int) ? IntDictionary[Int] + 1 : 1; });
    return IntDictionary;
}//Dictionary<int, int> V(int[] IntArray)

也可以这样

匿名 回复

抽象类能这么实例化?

匿名 回复

不好意思,这不是 Java

匿名 回复

这是什么语言 0_0

匿名 回复

C#,用的是.net 的基础类库,在那里面 Dictionary并不是抽象的

学习了。
不知道你是第几面产生这些感慨的,面试要招的人是最适合这个岗位的人,而不是技术能力最强的人,所以面试题往往点到为止,你符合岗位要求就行了,如果你要的钱比较多,那么会问一些比较深入的看看你是不是把面试官当 SB,不是说你技术最牛钱就最多的,主要还是看是否适合这个岗位(技术只是一个大的方面)。
再多说几句吧,你写的这几个问题挺对我胃口的。
首先你这 4 个问题,其实实际运用中意义不大,开发都很少用,更不用说测试了。
1.3 问题是锁的,多线程的,但是现在服务器都是分布式的,使用的都是分布式锁,单进程内讨论锁和多线程意义不大,脱离实际。
2.问题是线程池,意义很好,不过单进程内再开线程池,意义也不大,现在都是分布式,一般是队列实现任务分发,仍然是跨进程的。
4.问题是垃圾回收机制,讨论的是各种垃圾回收机制的优缺点,可是你应该也了解,CMS 一旦出问题就是致命的,而多线程回收是默认的,你讲究这些问题,理论研究很好,实际应用上谁能让你上 CMS 呢。更何况 CMS 提高性能也并不是很明显。
你能熟悉 JVM 到这个深度自然非常好,但对于测试工作是锦上添花并非雪中送碳,希望能理解。

zyanycall 回复

阿里有自己的 jvm,这些知识不懂,第一面都过不去。

zyanycall 回复

你这样回答面试题,必被毙掉。

匿名 回复

没想到这里杠精这么多……
算了,聊点儿你们想不到的就是必被毙掉,那你们就去背书好了,祝你们都去阿里。

仅楼主可见

不吹牛的说,如果问我这些,我是真回答不上来。以楼主的水平就不要去小公司面试了,面试官的水平都没你高,真的是浪费时间。剑指 BAT 就 ok 了。

应聘者和面试官本来就是一个博弈的过程,应聘者想找到自己理想的工作,所以想让面试官问一些自己比较擅长或是体现自己能力的问题。而面试官找的是一个合适自己岗位的人,并不是技术最牛的人,也许你很牛,但是性格孤傲,不利于团队合作,或是总是盛气凌人的话,作为面试官也不会要你的。反正钱是公司出的,平时工作要和你一起,干嘛不找个与自己合得来的人哟!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册