现在的程序员,这么简单的问题都能答错吗?

2021-05-06 19:39:26 +08:00
 polyang
今天作为面试官面了个应聘初级 Java 的程序员,该程序员工作 3 年,因为是初级,先问了几个简单的问题:

1 、final 修饰的变量到底是指引用不能变还是引用的对象内容不能变?
答曰:引用的对象内容不能变

2 、有两个 Integer 类型的变量,他们的值都是 100,如果用==比较,结果是什么?
答曰:false,他说==比较的是内存地址

3 、关于 MySQL 的索引问题,like 会不会走索引?
答曰:不会,而且还特别补充了一句,只要用到了 like 都不会走索引。

4 、创建线程有哪几种方式?
答曰:只知道线程池的方式,其他方式不清楚(然后我顺着这个问了他线程池,结果他说工作中没有用到过线程池,对线程池不是特别了解)。

但其他的理论性东西又答的还可以,估计是背的面试题。
11011 次点击
所在节点    程序员
99 条回复
crazyhorse
2021-05-07 09:25:44 +08:00
%a%的 like 不会走索引
kakach
2021-05-07 09:28:50 +08:00
线程和线程池除了学习写 demo,个人经验,生产实践中很少手动显式地去创建,可能是我接触的比较少。模糊记得看过的书上也建议不要手动去创建。
opentrade
2021-05-07 09:53:43 +08:00
我也见过工作五年 直接上手就修改 protobuf 字段 id 的家伙 囫囵吞枣型选手
xloger
2021-05-07 09:59:28 +08:00
对于 Integer 的缓存池我有个问题啊,请问你们了解这个是在工作中什么场景遇到的呢?还是说是背面试题看到的?

延展一下,除了 Integer,其他几个包装类型有没有缓冲池的概念呢?如果没有,为什么没有呢? Integer 设置缓冲池的目的是什么,它的取值范围那么大,为啥范围仅仅是 -128 到 127 呢,为什么不大一些呢?

我不是在杠啊,我是真不明白,非工作场景遇到的底层细节,除非你说你涉猎广泛看书看知识点看到,不然不就是背面试题背的么,有啥意义呢?

[其他几个问题我觉得问得没问题
Dogtler
2021-05-07 10:07:05 +08:00
我也是菜
Dogtler
2021-05-07 10:10:51 +08:00
另外,隐约闻出一丝傲慢。都是为了谋生,能背面试题 说明起码对这行 态度端正。还有上面那些题目 我特么全不会,不百度一下 真的太难了。
BuffDog
2021-05-07 10:19:31 +08:00
三年了还问这些,你们真的会去记这些细节么
重要的不是解决问题的能力么
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);
leeyuzhe
2021-05-07 10:47:26 +08:00
Integer 的缓存池我之前完全不知,问我我也懵
rubygo
2021-05-07 10:48:15 +08:00
@ccde8259 你的视野有点厉害
funbox
2021-05-07 10:50:18 +08:00
只是题库背错了
NerverLibis
2021-05-07 10:58:02 +08:00
工作 9 年 6 年经验 PHP 期望 20-25K 面试照片戴口罩的俯视图
框架 TP3.1 Laravel4 Linux Mysql 全不会
6 年换了 4 公司,只做过微商……感觉下
polyang
2021-05-07 10:58:03 +08:00
@BuffDog 除了第二个,其他不算细节吧,如果这些都不知道,你还能指望他解决什么问题?
dingwen07
2021-05-07 10:59:16 +08:00
yitingbai
2021-05-07 11:05:14 +08:00
补充一下, final 修饰的变量也不是不能改, 通过反射照样改
xsen
2021-05-07 11:07:29 +08:00
@polyang #33 1/2/3/4 都不会的路过;对于百度下就能出来的问题,不知道问了有何意义
但我确实能解决很多很多各种各样的问题

对于有工作经验、有项目经验的人来说,为嘛不问下项目、踩坑之后才知道的问题,为何不多问下工程化相关的问题;当然,或可以间接说明人是否善于学习、沟通与解决问题的问题
qwer666df
2021-05-07 11:12:18 +08:00
插一个, 请教下那为啥
int q = 10000;
int e = 10000;
System.out.println(q == e);
这就又是 true 了嘞
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,需要额外注意。不然这就是背面试题的事?
dqzcwxb
2021-05-07 11:17:51 +08:00
面试问线程或者线程池的十有八九不知道 newWorkStealingPool()更不知道什么是 fork/join ForkJoinPool.commonPool
lagoon
2021-05-07 11:18:55 +08:00
妈呀,其实我最害怕问语言细节。
不过 Java 后端这种问题确实不应该答错。

我常用的,要写代码的语言至少有 4 种。考虑到某些跨平台前端,估计要掌握的语言只多不少。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/775262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX