出了个编程题作为第一题,题目很简单就是一个列表找最大值:
var list = List.of(5, 23, 6, 112, 44, 33, 31); // 找出 list 中的最大值并输出
但是没想到这么多人卡在这题上了,讲道理这题如果在 leecode 上应该是 very easy 的难度吧,各位 v 友们觉得呢,是题目太难了还是面试的人太水了?
1 xx6412223 2022-06-24 16:21:04 +08:00 ![]() 太简单了,他们以为有诈 |
![]() | 2 ifdef 2022-06-24 16:22:13 +08:00 这个 Collections.sort 不就可以了 |
![]() | 4 murmur 2022-06-24 16:24:24 +08:00 我也觉得有诈,for 一次就搞定的题,为啥拿来做面试题 另外,为啥要 sort 啊,有说要输出有几个最大值么 |
5 lihahahayang 2022-06-24 16:25:00 +08:00 手写排序? |
![]() | 6 offswitch 2022-06-24 16:25:21 +08:00 那就别考 leetcode ,这不就行了。 |
![]() | 7 jesson 2022-06-24 16:25:29 +08:00 大佬还招人吗?这题我会做 |
![]() | 9 ryanbuu 2022-06-24 16:26:31 +08:00 认真的……base 北京的话还招人吗 |
10 Mithril 2022-06-24 16:26:34 +08:00 ![]() 现在有很多这种,说起框架八股文一套一套的,面经背的滚瓜烂熟。 让他们写个第一门编程课的课后题都写不出来。 就不用说什么遍历二叉树链表这种稍微涉及点数据结构的,就连递归算个斐波那契都不一定写得出来,甚至一个最简单的双层循环打印菱形的题都能卡出去一大半人。 你都不知道这些精通大数据高并发深入了解 JVM 的人才到底写没写过代码。 |
![]() | 11 ifdef 2022-06-24 16:27:41 +08:00 看错了,以为排序,那就 max ? |
![]() | 12 nicegoing 2022-06-24 16:27:44 +08:00 via iPhone 这不就是个 for 循环吗?难道要分成两半,再查找 |
14 jtping 2022-06-24 16:28:19 +08:00 我第一反应也是有诈 有点容易过头了 |
![]() | 15 shakaraka PRO ![]() 最大:[5, 23, 6, 112, 44, 33, 31].reduce((a, b) => a > b ? a : b) // 112 最小:[5, 23, 6, 112, 44, 33, 31].reduce((a, b) => a < b ? a : b) // 5 |
![]() | 16 Renco 2022-06-24 16:29:47 +08:00 直接给一个手写四种 排序方法的题试试 |
![]() | 18 isno 2022-06-24 16:30:05 +08:00 Collections.max(list) op 我过了么? |
![]() | 22 cpstar 2022-06-24 16:33:24 +08:00 这到底是 JAVA 还是 Javascript ?为啥我看到了 VAR ? |
![]() | 23 sheeta 2022-06-24 16:34:48 +08:00 ![]() @ifdef 你好,有的。list.stream().reduce((a, b) -> a < b ? a : b).get() |
![]() | 27 cpstar 2022-06-24 16:36:28 +08:00 ![]() 好吧,我还活在 java 1.8 呢,各位聊好 |
![]() | 29 ryanbuu 2022-06-24 16:36:57 +08:00 一波炸出来了很多 jdk8 的用户哈哈哈哈 |
![]() | 30 rabbbit 2022-06-24 16:39:32 +08:00 List<Integer> integers = Arrays.asList(5, 23, 6, 112, 44, 33, 31); int maxNum = integers.stream().reduce(0, (max, num) -> max > num ? max : num); System.out.println(maxNum); |
31 NeroKamin 2022-06-24 16:43:03 +08:00 哈哈哈估计是太简单了怀疑有诈? |
![]() | 33 MatthewHan 2022-06-24 16:46:52 +08:00 int max = 0xC0C0C0C0; |
35 bookbox 2022-06-24 16:49:12 +08:00 哈哈,有点儿东西呀 防欺诈人人有责 |
![]() | 36 moioooo 2022-06-24 16:50:34 +08:00 不考虑优雅和高端、性能的话。直接 for 就行呀。 |
37 lllllliiii 2022-06-24 16:53:53 +08:00 还招吗,老哥邮箱多少 |
![]() | 38 bruce0 2022-06-24 16:54:15 +08:00 你这个启发我了 以后面试可以别只问八股文了, 直接让他写段代码试试, 别光嘴上说的天花乱坠, 给他键盘, 一行代码写不出来. 听我同事说, 以前我们公司面一个人, 不是特别想要他(各种综合原因吧, 但是缺人) 后来经理说, 让他写个冒泡排序, 能写出了就要他, 那个人就是没写出来, 我感觉这个写冒泡 应该是给他机会了 0.0 |
39 Jooooooooo 2022-06-24 16:55:07 +08:00 sort 解法是什么鬼... |
40 golangLover 2022-06-24 16:55:41 +08:00 via Android ![]() list.stream().max(Comparator:comparing(Integer:valueOf)).orElse(0) |
![]() | 41 Timefly 2022-06-24 16:58:18 +08:00 你要是问第 k 大得数可能别人还会, 最大的没刷过,不会 , hhh |
![]() | 42 ifdef 2022-06-24 16:58:48 +08:00 看到上面帖子,突然发现我也不会写冒泡。只想一脸崇拜花痴地看着会写冒泡的哥哥疯狂输出代码 |
![]() | 43 cassyfar 2022-06-24 17:00:19 +08:00 ![]() System.out.println(112) |
![]() | 46 bruce0 2022-06-24 17:06:04 +08:00 @monkeyWie 确实冒泡比这个要难多了, 这个一个 for 循环就出来, 冒泡只是举个栗子嘛, 也是想看一下他的代码基本功. 忽然又想起一个我司的事情, 我大哥面一个 C++, 让面试的写一个 map 的遍历, 也是没写出来, 我大哥直接不想面他了 |
![]() |
![]() | 48 aitaii 2022-06-24 17:09:15 +08:00 冒泡排序,二分查找 随便一个应该过了,for 循环可能觉得有诈 |
![]() | 49 teemobighero 2022-06-24 17:09:37 +08:00 List < Long > lOngList= new ArrayList < > (); longList.add(1L); longList.add(2L); longList.add(3L); Long max = longList.stream().max(Long::compareTo).get(); System.out.println(max); |
50 dqzcwxb 2022-06-24 17:10:40 +08:00 |
![]() | 51 hay0577 2022-06-24 17:11:45 +08:00 @monkeyWie 为什么一定要用 for 循环啊? 我这样 应该也能过了吧 Stream.of(5, 23, 6, 112, 44, 33, 31).max(Integer::compareTo).get() |
52 daimubai 2022-06-24 17:17:58 +08:00 Integer max = 0; for (Integer i : list) { if (i > max) { max = i; } } System.out.println("max = " + max); 楼主是想要这种? |
![]() | 53 monkeyWie OP @hay313955795 可以过,但是我还是会要求用 for 写一遍 |
55 NeezerGu 2022-06-24 17:18:44 +08:00 @monkeyWie 出了个编程题作为第一题,题目很简单就是一个列表找最大值: var list = List.of(5, 23, 6, 112, 44, 33, 31); // 找出 list 中的最大值并输出 但是没想到这么多人卡在这题上了,讲道理这题如果在 leecode 上应该是 very easy 的难度吧,各位 v 友们觉得呢,是题目太难了还是面试的人太水了? --- 那肯定不行啊,用 for 循环实现才过关 --- 非杠,好奇问问,全文没说必须用 for ,为啥 for 循环才过关? 这。。。真不算有诈吗? |
![]() | 57 ifdef 2022-06-24 17:20:54 +08:00 @daimubai #52 这个不对吧,应该是 int max 。Integer 是会自动 unboxing 的,你这样打印出来是 object ? |
![]() | 59 xiangyuecn 2022-06-24 17:22:57 +08:00 应该是都学了 stream 吧,一下子还真不知道怎么写。。。 另:stream 真丑,如果需要链式调用,我宁愿自己封装。 |
60 NoNewWorld 2022-06-24 17:23:13 +08:00 我面试就是这样,除了项目八股文,还会找几个 leetcode 的 easy 题让面试者选一个写下,看下功底,毕竟 easy 题大部分都会 |
![]() | 61 cheng6563 2022-06-24 17:23:59 +08:00 我问个 int 占几字节都能筛掉大半 |
![]() | 62 monkeyWie OP @NeezerGu 我觉得能不依赖类库实现才是最满足我的期望啊,就像写快排一样直接调用 sort()也出来了结果,但那有什么意义呢 |
![]() | 63 zapper 2022-06-24 17:24:53 +08:00 ![]() System.out.print("112"); |
65 Mika43 2022-06-24 17:29:05 +08:00 via Android 不难,无非就是学校程序设计基础的题 |
![]() | 66 huihuiHK 2022-06-24 17:32:33 +08:00 这题我会,公司还招人吗?哈哈 |
![]() | 68 winglight2016 2022-06-24 17:36:42 +08:00 @monkeyWie #61 虽然我能理解”不依赖类库“能写出来有意义,但是,你的题目也没提不能用现成的类库呀?说是有诈,不为过了。 |
70 facelezz 2022-06-24 17:38:49 +08:00 好强的既视感,感觉以前见过这个帖子 |
71 vainl1 2022-06-24 17:41:32 +08:00 @daimubai 如果列表中全部为负数,这个代码就得不到正确结果了。求最大最小值,使用循环,应该使用列表的第一个值来初始化。 |
72 NeezerGu 2022-06-24 17:41:34 +08:00 ![]() @monkeyWie 那我有个疑惑哈。。。 记得快排,和不记得快排的程序员,在实力上有差别吗? 或者应该这样问,快排是否能体现一个程序员的实力呢? 真的非杠,作为非程序员,我个人会觉得这玩意记不记得好像真的没区别啊。。。拿到一个需求,如果需要排序或者需要最大值,不都是 sorts 和 max 吗? |
![]() | 73 BrookO 2022-06-24 17:43:37 +08:00 list.stream().reduce(Integer.MIN_VALUE, Math::max); |
![]() | 74 BrookO 2022-06-24 17:45:13 +08:00 说实话,确实简单到容易让人多想 |
![]() | 75 AlisaDestiny 2022-06-24 17:45:37 +08:00 不是,你这招的几年 Java 的啊,这都写不出来,这刚编程入门一个月的也能写出来了。 |
![]() | 76 kongkongyzt &bsp;2022-06-24 17:49:52 +08:00 话说第一眼看上去还以为有诈........ |
![]() | 77 lianjun1991 2022-06-24 17:51:28 +08:00 首先从小到大排序,然后用 for 循环取出 n-1 ,就是最大值 |
78 28Sv0ngQfIE7Yloe 2022-06-24 17:55:11 +08:00 难道是看到 var 愣住了? |
79 none 2022-06-24 17:55:14 +08:00 几年没写 java 了,都已经可以 var 声明变量了啊。。。 |
81 Suddoo 2022-06-24 17:56:49 +08:00 via iPhone 哈哈,这比背八股文有意思多了 开口底层原理、框架内核、JVM 调得炉火纯青,结果送分题不会写,一看就是没怎么做过项目的 |
![]() | 82 misaka19000 2022-06-24 17:58:21 +08:00 一个冒泡就行了 |
![]() | 83 quanjw 2022-06-24 17:59:52 +08:00 如果最大值有多个呢 |
![]() | 84 ifdef 2022-06-24 18:00:01 +08:00 via Android var max = 112 System.out.print(max) |
![]() | 85 monkeyWie OP @NeezerGu 我个人觉得吧,那些复杂的算法写不写的出都无所谓,能理解大概的原理就行,有点偏题了啊,其实这道题就是考察简单的逻辑思维能力吧,这题目都做不出,以后业务中出现点稍微复杂的逻辑问题那不是也够呛 |
![]() | 87 misaka19000 2022-06-24 18:00:36 +08:00 楼上居然还有那么多人说要排序。。。这题不需要排序 |
88 Mithril 2022-06-24 18:01:05 +08:00 @NeezerGu 区别很大。 快排,或者说大多数算法,虽说是用来解决某些特定问题的,但实际上提供的是解决类似问题的思路。 比如说有个列表里面有一堆商品,让你找出其中最便宜的 5 个。 如果这列表不长还好说,如果有数量非常多的话,你还先排序吗? |
89 lllllliiii 2022-06-24 18:01:11 +08:00 @misaka19000 这个不需要冒泡,只用一个 for 。。。 int max = Integer.MIN_VALUE; for (final Integer i : list) { if (i > max) { max = i; } } |
90 Leviathann 2022-06-24 18:01:18 +08:00 理解 reduce 的比只会 for 的更会 编程 一些 |
![]() | 91 monkeyWie OP @AlisaDestiny 不是,我也以为这题应该是都会做啊,不然怎么放在第一题,但是来的都是 3-4 年工作经验的都写不出 |
![]() | 93 misaka19000 2022-06-24 18:04:06 +08:00 |
![]() | 94 misaka19000 2022-06-24 18:04:57 +08:00 @fzdwx #88 你这个还可以优化,把第一个值设置为 max ,可以减少一次循环 |
95 lllllliiii 2022-06-24 18:05:16 +08:00 @misaka19000 .... |
96 lllllliiii 2022-06-24 18:05:30 +08:00 @misaka19000 #94 开始卷了 |
![]() | 98 itechify PRO 一次循环 O(n)? |
99 zamaojava 2022-06-24 18:09:45 +08:00 我不会.......... |
![]() | 100 blockmin 2022-06-24 18:09:46 +08:00 简单到让人多想,但凡你要取最大的两个或以上,我都会觉得是考察 TopK 。上面说排序的,取一个还排个锤子的序 |