1
facelezz 2021-05-06 19:46:07 +08:00
这么水么 3 年经验都在干啥= =
|
2
Amber2011 2021-05-06 19:47:22 +08:00 via Android
我觉得如果 3 年正常工作的话,应该不会去面初级的吧
|
3
zhoudaiyu 2021-05-06 20:12:20 +08:00 via iPhone 2
没写过 Java 的 123 也能答上来吧
|
4
yeqizhang 2021-05-06 20:16:58 +08:00 via Android
第二个问题有点东西..其实有两种答案,不去搜索我也记不清。
其它都是常应用到的... |
5
geekboy 2021-05-06 20:28:48 +08:00
这些都是基础题吧,想不通这些都答错其他的答得可以的情况
|
6
ccde8259 2021-05-06 20:37:24 +08:00 via iPhone 31
面试官用”对象内容”表述似乎不够准确,表述换成”对象的域或者对象属性不能变”会更合适更清晰。第二个单纯就是没背 Integer 缓存范围+没踩过基本类型的坑……
许多无关痛痒的小细节往往自己很难去主动意识到,尤其是长期不去使用的领域。人的精力总是有限的,可能他的经历在你的面试域的投影有着无数的偏差。但是能不能在里面找到闪光点,能不能帮助候选人修正自己长期以来的谬误,也许是也是面试中重要的一环吧。 |
7
bear2000 2021-05-06 20:40:37 +08:00
应届生面试题都比这个难...
|
8
raaaaaar 2021-05-06 20:42:03 +08:00 via Android 4
。我是废物。。
|
9
leafre 2021-05-06 20:43:00 +08:00
2 有错吗?
|
10
FreeEx 2021-05-06 20:56:16 +08:00 via iPhone 1
@leafre Java 包装类型有用到常量池功能,可以参考我写的这篇文章《 Java 的奇技淫巧》 https://typesafe.cn/posts/java-unexpected-features/
|
12
statement 2021-05-06 21:01:21 +08:00 via iPhone 3
散播焦虑。同三年同不会。 结论知道。 你要问原因。 三层 部分能回答出一层 知识多数不都是记得。 记得和背的。 应该没有什么区别
|
13
zidian 2021-05-06 21:15:18 +08:00
2 虽然知道,但是好像从没写过 Integer == Integer
|
14
raysonx 2021-05-06 22:39:25 +08:00 via iPhone
其实要抬杠的话,两个 Integer 之间用==确实是比较的地址,只不过你不能说一定是 false 。常量池中的对象也是对象。。。
|
16
dingwen07 2021-05-06 22:50:47 +08:00 via iPhone 7
等一下,2 不一定:
Integer x = new Integer(100); Integer y = new Integer(100); System.out.println(x == y); 这个会打印 false |
17
2kCS5c0b0ITXE5k2 2021-05-06 22:51:45 +08:00
国内的 Java 卷成这样 很大程度是因为伪造工作经验的人.
|
18
limuyan44 2021-05-06 23:49:13 +08:00
以我不到半年的 java 工作经验来看,虽然想考的是 IntegerCache,但是!参考答案都错了。
|
20
pydiff 2021-05-07 09:24:00 +08:00
基本上 100%是培训班出来的,不过就算是培训班出来的也会线程创建,线程池才对,看来是在培训班时也没怎么认真学的
|
21
crazyhorse 2021-05-07 09:25:44 +08:00
%a%的 like 不会走索引
|
22
kakach 2021-05-07 09:28:50 +08:00
线程和线程池除了学习写 demo,个人经验,生产实践中很少手动显式地去创建,可能是我接触的比较少。模糊记得看过的书上也建议不要手动去创建。
|
23
opentrade 2021-05-07 09:53:43 +08:00 via Android
我也见过工作五年 直接上手就修改 protobuf 字段 id 的家伙 囫囵吞枣型选手
|
24
xloger 2021-05-07 09:59:28 +08:00
对于 Integer 的缓存池我有个问题啊,请问你们了解这个是在工作中什么场景遇到的呢?还是说是背面试题看到的?
延展一下,除了 Integer,其他几个包装类型有没有缓冲池的概念呢?如果没有,为什么没有呢? Integer 设置缓冲池的目的是什么,它的取值范围那么大,为啥范围仅仅是 -128 到 127 呢,为什么不大一些呢? 我不是在杠啊,我是真不明白,非工作场景遇到的底层细节,除非你说你涉猎广泛看书看知识点看到,不然不就是背面试题背的么,有啥意义呢? [其他几个问题我觉得问得没问题 |
25
Dogtler 2021-05-07 10:07:05 +08:00
我也是菜
|
26
Dogtler 2021-05-07 10:10:51 +08:00
另外,隐约闻出一丝傲慢。都是为了谋生,能背面试题 说明起码对这行 态度端正。还有上面那些题目 我特么全不会,不百度一下 真的太难了。
|
27
BuffDog 2021-05-07 10:19:31 +08:00
三年了还问这些,你们真的会去记这些细节么
重要的不是解决问题的能力么 |
28
tinyuu 2021-05-07 10:45:06 +08:00
Integer a= 100;
Integer b= new Integer(100); System.out.println(a == b); Integer a= new Integer(100); Integer b= new Integer(100); System.out.println(a == b); Integer a= 100; Integer b= 100; System.out.println(a == b); |
29
leeyuzhe 2021-05-07 10:47:26 +08:00
Integer 的缓存池我之前完全不知,问我我也懵
|
31
funbox 2021-05-07 10:50:18 +08:00 1
只是题库背错了
|
32
NerverLibis 2021-05-07 10:58:02 +08:00
工作 9 年 6 年经验 PHP 期望 20-25K 面试照片戴口罩的俯视图
框架 TP3.1 Laravel4 Linux Mysql 全不会 6 年换了 4 公司,只做过微商……感觉下 |
34
dingwen07 2021-05-07 10:59:16 +08:00 via iPhone 1
|
35
yitingbai 2021-05-07 11:05:14 +08:00
补充一下, final 修饰的变量也不是不能改, 通过反射照样改
|
36
xsen 2021-05-07 11:07:29 +08:00
@polyang #33 1/2/3/4 都不会的路过;对于百度下就能出来的问题,不知道问了有何意义
但我确实能解决很多很多各种各样的问题 对于有工作经验、有项目经验的人来说,为嘛不问下项目、踩坑之后才知道的问题,为何不多问下工程化相关的问题;当然,或可以间接说明人是否善于学习、沟通与解决问题的问题 |
37
qwer666df 2021-05-07 11:12:18 +08:00
插一个, 请教下那为啥
int q = 10000; int e = 10000; System.out.println(q == e); 这就又是 true 了嘞 |
38
xloger 2021-05-07 11:12:27 +08:00
@dingwen07 #34 谢谢您提供的文档,而正如文档里所说:
This ensures that in most common cases, the behavior will be the desired one, without imposing an undue performance penalty, especially on small devices. Less memory-limited implementations might, for example, cache all char and short values, as well as int and long values in the range of -32K to +32K. 按我的理解,这只是 JVM 做的一个底层性能优化,而且它本身也不保证一切情况下不变,比如在内存充裕的设备,缓存池范围可能就是 -32k to 32k 了。 那么,纠结 Integer 的 100 == 100 返回啥,200 == 200 返回啥的现实意义是啥?除非说因为这个会很容易造成某方面的 bug,需要额外注意。不然这就是背面试题的事? |
39
dqzcwxb 2021-05-07 11:17:51 +08:00
面试问线程或者线程池的十有八九不知道 newWorkStealingPool()更不知道什么是 fork/join ForkJoinPool.commonPool
|
40
lagoon 2021-05-07 11:18:55 +08:00
妈呀,其实我最害怕问语言细节。
不过 Java 后端这种问题确实不应该答错。 我常用的,要写代码的语言至少有 4 种。考虑到某些跨平台前端,估计要掌握的语言只多不少。 |
41
wssy921 2021-05-07 11:22:31 +08:00
我 6 年经验,感觉也不太会面试了。 奇奇怪怪的知识点太多了,很多东西,真的用过了, 面试的时候突然提起也忘记了
|
42
fffang 2021-05-07 11:23:07 +08:00
关于第二个问题,他有可能之前写过 JavaScript 。doge
|
43
Mirage09 2021-05-07 11:27:53 +08:00
问这些无聊的问题还不如弄个 LeetCode medium 讨论讨论...
|
44
lauix 2021-05-07 11:28:42 +08:00
只会第三个,like 要看 % 在哪里,才会走索引。
|
45
no1xsyzy 2021-05-07 11:30:56 +08:00 1
不写 Java 的问一下,这个 Integer 缓存池,是列入标准了吗?
还是说是 de facto 标准?那么存在多少依赖此行为的代码? 讽刺的是,大多数 Lisp 实现中 eq? 这一定义上就是严格同一性比较,反而能对同类型的数进行数学相等的比较 因为函数式不需要有『方法』,所以基本类型不构成对象 而 CPython 下,则是基于一个更诡异的编译器优化:一方面有一个有限的常量池([-5...256]),另一方面,如果在同一次编译中编译期求值后存在同一个值,则优化成同一个对象。 所以,在 REPL 中可以发现如下现象(注意一个 >>> 发生一次编译): >>> a=12345; b=10**4+2344+1; a is b True >>> a=12345 >>> b=12345 >>> a is b False |
46
simonlu9 2021-05-07 11:45:03 +08:00
@xloger 因为常用的业务逻辑都会用到 for 循环大量用到都是不超 100 的数字,经常使用,没必要每次都初始化,跟字符串一样
|
47
zihuyishi 2021-05-07 11:45:48 +08:00 4
有句说句,为啥我觉得做 java 的要面试这种问题很蠢,有点茴香豆有几种写法的感觉
|
48
simonlu9 2021-05-07 11:47:38 +08:00
同样感觉,之前面试的 java 实在太水了,基本我都是用一些实战经验来过滤,最简单的一个,http 和 tcp 有什么区别,很多都会答 http 不需要三次握手,tcp 需要三次握手,直接 pass
|
49
unco020511 2021-05-07 11:51:16 +08:00
说真的,java 这种上古语言,真是食之无味弃之可惜(对于我来说)
|
50
unco020511 2021-05-07 11:52:17 +08:00
@simonlu9 这个问题就比什么 integer 好很多,http 是很重要的知识
|
51
lakehylia 2021-05-07 12:00:55 +08:00
@simonlu9 http 是 tcp 的再上一层协议吧,tcp 底下有 ip 协议。大学里涉计算机专业的基本课程,要考的。。。
|
52
dany813 2021-05-07 12:02:45 +08:00
3 年 培训的吧
|
53
lakehylia 2021-05-07 12:03:08 +08:00
第二个问题,其实是未定义的,不要问这种问题。未定义的行为,鬼知道会有什么结果,java 文档里面没有定义。
|
55
kidlj 2021-05-07 12:05:02 +08:00
现在的 HR,连这样的面试者都筛选不出来吗?
|
56
bluekz 2021-05-07 12:05:05 +08:00
我也分享几个我面的:
1.字符串倒转的方法写不出来,部分百度抄了之后自己无法清楚描述每一句逻辑。for 循环说都不会的也有。 2.string a = "123"; a=a+"45";输出什么?有 123 的,有 45 的,知道 12345 的问一下“那为什么说 string 不可变” 就蒙了。 3.说两个或以上字段不能共同作为一个联合索引,我都没办法往下问最左原则的问题。即使能问,也没有能答对的。 我们的要求是 2 年左右经验。 即使我知道有些是毕业了培训班走一遭出来的,问题这大学+培训也没听过讲啊 |
57
hoyixi 2021-05-07 12:05:31 +08:00
以前都是有笔试环节的,你问的这些基础题,就是放在笔试用来初筛的。
当然,我说的笔试,是不能手机上网查答案的那种,不然也没意义。 |
60
Helsing 2021-05-07 12:12:16 +08:00 via iPhone
第二个问题其实真的很偏,基本都是背面经才会知道
|
61
redtea 2021-05-07 12:20:31 +08:00
第二题这个问题问的很好,就怕团队里出现写出==的人。我就见到过判断 String 用==的代码。
|
62
afewok 2021-05-07 13:02:43 +08:00
第二个都快 20 年的老知识了,127 的边界问题,类似坑爹的题还是 "aaa"==new String("aaa")
第四个我觉得有意思,我记忆中,java 的线程创建只有一种方式(创建个 Runnable 的实现类并实例化,当然也可以直接实例化现成的 Thread 类),其他的方案都是在此基础上的线程包装或管理 |
63
Amber2011 2021-05-07 13:18:40 +08:00 via Android
@xloger 这个我是做一个自增操作的时候用==,还是啥来着,理论上是 true 结果是 false 一直想不通,在评论区提问后有人解答了这个缓存。还有就是 java(阿里巴巴)开发手册里也提到过一手
|
64
yazinnnn 2021-05-07 13:20:03 +08:00
招个会 kotlin 的 java 开发可以避免一些低级&蛋疼的问题.
|
65
4kingRAS 2021-05-07 13:35:54 +08:00
@no1xsyzy java 对象比较推荐用 equals,直接在 equals 里实现, == 本来就是用于判断引用(指针)相不相同的。
Integer 缓存取决于 JVM 实现,openjdk 和 oracle 的是-128~128 |
66
dbpe 2021-05-07 13:43:56 +08:00
等 Primitive Objects 出来,我想就不用在问第二个问题了
|
68
lumnag 2021-05-07 13:59:59 +08:00
说实话没看面试题的我一个也答不上来
|
69
Michaelssss 2021-05-07 14:05:49 +08:00
我出了个机试题目,请使用任意自己熟悉的框架实现登陆鉴权功能,然后刷走了五六个人。。。。。。。。
|
70
lbp0200 2021-05-07 14:47:58 +08:00
工作十一年了,这四个问题,一个都不会
|
71
cloudzhou 2021-05-07 14:52:23 +08:00
问题 2 有些偏门,其他问题正常
|
72
WhoMercy 2021-05-07 14:55:27 +08:00
你可以把你的“参考答案”贴出来,让大家品评品评
|
73
YORYOR 2021-05-07 15:06:48 +08:00
考第二个的意义是什么 能指导你筛选候选人么
|
75
hemingyang 2021-05-07 15:20:09 +08:00
@qwer666df int 基本类型 Integer 包装类型 int 比的是值 Integer 比较会指向内存对象 new Integer 是不同的两个对象
|
76
lachesis 2021-05-07 15:32:34 +08:00
每次看到这种面试题都觉得特别傻
|
77
vagranth 2021-05-07 15:34:26 +08:00
说实话,这些问题我都回答不上来。
通常来说,遇到这类问题的时候,我会 google 一下 |
78
dark3212 2021-05-07 15:57:23 +08:00 2
@xloger
其他问题不好说,Integer 缓存问题我实际场景踩过坑。 时间:大概是 15 年 背景:创业公司,巨小的公司,一个后端(我),一个 ios,一个安卓,一个测试 功能:实现一个讨论组,有一个主持人,主持人能全程讲话,其他人需要主持人点名才能讲话 主持人功能实现代码: if(该用户的 ID==主持人的 ID){ //主持人逻辑 } 自测 ok,测试测了简单测了几十次 ok(测试库是新的,用户从 1 自增),上线后不 ok,主持人进来系统不认,无法主持。 从那以后我就深刻的记住了 IntegerCache 。 |
79
no1xsyzy 2021-05-07 16:00:16 +08:00
@4kingRAS 虽然不写,但其实我还是知道这些的。
考察一些底层实现层面的优化,实际上是没有必要的。如果想要考量如何解决底层优化所造成的问题,直接把有问题的代码带着环境丢过去,让对方解决不好吗?就算解决不了,只要能看到一些理解。 |
80
douyacai911 2021-05-07 16:06:34 +08:00
@vagranth 工作八年了我也答不上来,因为我在日本做外派。。
|
81
IvanLi127 2021-05-07 16:15:10 +08:00
这题不难,我不写 java 的人,靠大学学的 java 都能答得上来,三年 java 这 5 题错 2 题就已经不靠谱了。虽然楼主这题好像不是很严谨,不过如果有看过面试题的话也应该能反应得出来才对。
|
82
zxCoder 2021-05-07 16:34:17 +08:00
第二个问题没啥意义
(反正我会,我看过 |
83
HolmLoh 2021-05-07 16:40:09 +08:00
2 、4 如果不是写了 3 年 java 的,答不出来其实情有可原,而且 2 他是答对了
1 答不出来实在不应该,但也有会错题意的可能 |
84
buzailianxi 2021-05-07 17:20:37 +08:00 1
凑合干吧,熟练工,年轻就行,真都会你给多少钱呢
|
85
lachesis 2021-05-07 17:28:44 +08:00
这不是难不难的问题,而是提问方式有明显的挖坑倾向,面试经验少的人碰到不自信的内容就容易被带偏。例如第 2 题,还不如直接展开聊聊 equals 和==的区别,问清楚比较值时应该用哪个
|
86
johnsona 2021-05-07 20:32:58 +08:00 via iPhone
俺知道 like 可以前缀索引
其他不知道了 面试官我可以去你们公司给你端茶倒水吗 其他三个不知道 java 都不会写 |
87
young1lin 2021-05-07 21:08:52 +08:00
不用看了,这是培训机构出来的。三年,只要不偷懒,这些都不算问题。问的都是 Spring 源码的问题,MQ 和 Redis 的实际使用场景问题。只要你能说一个小时任意一 MQ,不重复,都可以的。
|
88
enoc 2021-05-07 22:15:07 +08:00
我一个大二在校生都知道答案。。。
|
89
Felldeadbird 2021-05-07 22:57:30 +08:00
如果用过 mysql,然后回答 like 不走索引。应该是背题的人了。
|
90
JianH 2021-05-07 23:27:32 +08:00
第二题回答思路没问题吧,没看过 Integer 源码确实不知道啊,这属于偏题了吧
|
91
jiangzhizhou 2021-05-07 23:30:47 +08:00
面试官问我这种题的时候我一般都直接回复,不好意思贵司不适合我。
|
92
SpiderXiantang 2021-05-08 00:01:36 +08:00
格局小了
|
93
shyangs 2021-05-08 00:51:21 +08:00 2
学到了 IntegerCache 想在代码埋雷坑公司就这样写, 离职后业务扩充超过 127 就爆炸了 ::doge::
|
94
fuermosi777 2021-05-08 01:17:11 +08:00
工作六年,一个都答不上来
|
95
xupefei 2021-05-08 01:29:18 +08:00 via iPhone
有一道用 hashmap 解的 leetcode 题就涉及到了第二个问题里的坑
|
96
cassyfar 2021-05-08 02:55:14 +08:00
一般问我这些钻牛角尖没啥水平的问题,我扭头就走了。
|
97
snw 2021-05-08 06:31:05 +08:00 via Android
|
98
iceteacover 2021-05-08 11:37:05 +08:00
@dingwen07
public static void main(String[] args) { Integer x = new Integer(100); Integer y = new Integer(100); System.out.println(x == y); x = 100; y = 100; System.out.println(x == y); } 第一个 false,第二个 true 。 大概 Java 优化的时候只能通过很简单的情况做处理,深入下去可能需要 编译优化的知识。 反正 对象 用 == 比较在 Java 领域看不是什么好事情,很奇怪为什么出题要这么出。。。 |