面试了一个知名外企工作多年的 java 高级,985 硕士 一个普通的排序手写,半天才写出来 问了 equal 和 hashcode 的关系,以及为何,他说了一些机械的理解,但是为何 equal 相等,hashcode 必须相等说不出来 问 jdk 动态代理具体实现步骤,他说记不得了,说这个百度一下依葫芦画瓢就行了, 问 jvm 垃圾回收中,回收是如何实现的,有向图如何用数据结构表示,根搜索算法如何实现,不太清楚 问高并发多线程经验,说没多少,只是熟悉一些常见多线程 jdk 但是问 hashmap 为何线程不安全,答不出 rehash 的状况 分布式系统,分布式事务,秒杀,微服务架构之类的也没经验,只是读了写文章会些理论
外企里的 java 传统开发太害人了吧,就只会 SSH 那些框架和普通的 JDK api 不过他说拿到了 BAT 某家的 offer,只是工资涨的不多,所以再试试其他的互联公司
BAT 为啥会要这类外企的人?只是因为外企或者学历?
1
zuosiruan 2017-07-05 16:16:35 +08:00 via iPhone
🤔
|
2
coderluan 2017-07-05 16:23:45 +08:00
可能性太多了:
他撒谎了 他有关系 他走狗屎运 他有擅长的领域你没问 他面的不是纯开发职位 他面的 BAT 中的垃圾部门 你精神分裂其实没人来面试 楼主你这是想拿个例推出共性,怎么可能做的到。 PS:如果是面试工作多年的程序员,最好多给对方一些自由发挥的机会,说不定会有意外惊喜。 |
3
Keyes 2017-07-05 16:29:25 +08:00 via iPhone
Java 技术贴真的是不懂回,没有掌握这项技能……
学习这东西真的要靠自己,前老大有个朋友是在 ibm 做测试的,每天的工作就是早上到公司 oa 收用例,跑一遍,提交,接下来的 7 小时 30 分钟都在碌碌无为中度过。过来咨询出路,我们也只能坦诚地说那多时间都不去学习一些技能或者调研一下市场,这事儿真帮不了他 |
4
Betacoefficient 2017-07-05 16:44:24 +08:00
我个人认为,可能一直使用的技术比较老,但 bat 确实需要这样的人来维持之前的系统。
|
5
firefox12 2017-07-05 16:47:32 +08:00 20
这是因为 外企的业务要求造成的,因为你不知道 他不需要理解 equal 和 hashcode, 但是他负责的业务可能出奇的复杂,从 10 年前的功能到现在的功能都会支持,各种不同的版本,每个业务本事都不复杂,复杂的是如何安排好它们。 其次,整个系统可能有严格的 底层框架和 编写规范,所有人都必须按照这个框架写,这个框架 你根本没听说过,也没开过源,你怎么问?这套框架也许也是起源于 10 年前,无数补丁,但是它上面跑的业务 每年为公司赚着几亿美金的收入,技术落后 代码简单又如何,商业软件很多都这样。每个大公司里的程序员都是颗螺丝钉,把自己的一亩三分地 挖地三十尺。
我想到了一个故事,当年秦桧府里的包子是天下最好吃的,一个书生娶了一个秦桧府里的厨娘,很高兴,就让他老婆做一次包子,想享受一下 这个天下最好吃的包子。结果他老婆说 做不了,秦府里做包子有 30 道工序,我只负责切葱。 外企的人基本也就是这样吧。不过越是大的公司越是有这样的问题,你现在去 tx 的微信,你就能知道微信的所有架构了?只怕不行 |
6
aussieweever 2017-07-05 16:50:26 +08:00 via Android
大外企 一般流程严格,多年前开源开始火起来的时候我们建议产品中采用被无情的驳回
|
7
Phariel 2017-07-05 16:54:18 +08:00 via Android
大外企法务严格 用的都是些要么是自己的产品框架 要么就是很老的东西 你讲的这些平时工作中用不到自然而然就。。。
所以干一份私活对程序员来说是多么的重要 _(:з」∠)_ |
8
liprais 2017-07-05 17:00:02 +08:00
你只是通过面试来发掘人家的弱点罢了,人家的优点根本没看到
|
9
chocotan 2017-07-05 17:08:33 +08:00
楼主说的这些我也不会....或者说只懂皮毛
楼上有人猜测 使用技术比较老,业务要求 之类的原因,我是不赞成的 “就只会 SSH 那些框架和普通的 JDK api ”你这个就变成地图炮了 比如有的人 java8 函数式用的溜溜的, 反倒是有很多原理懂的比较多的 对这些懂得很少 |
10
CDL 2017-07-05 17:12:18 +08:00
大概有些面试别人是为了刷优越感吧
|
11
rubyvector 2017-07-05 17:12:42 +08:00
q
|
12
jarlyyn 2017-07-05 17:12:54 +08:00
荒废有可能只是大家深入的方向不同而已。
|
13
tiancaiamao 2017-07-05 17:13:12 +08:00
看完 LZ 提的面试问题,觉得可以聊聊。最近考虑换工作不,要不要给我们来个简历?
手动斜眼 |
14
rubyvector 2017-07-05 17:16:04 +08:00
你招自己要的人就行了。不是每个人都要啥啥都会,啥啥都明白。
也不是啥啥都明白就能赚大钱。当年你问马云 PHP 是啥,他可能一个字都答不上来,人家照样开码代码的科技公司 一个大企业要得多的是螺丝钉,干小部分事情,维持公司运转。 对于团队而言,什么都会的人太多了,往往只能干事,不能成事 |
15
armoni 2017-07-05 17:22:09 +08:00
求问楼主,很多年以前看完 jvm 原理那本书,可是里面的讲的东西这么多年也没用到过,何解?
|
16
armoni 2017-07-05 17:25:19 +08:00
至于楼主说的情况在外企中不少,面试进 BAT 不奇怪,能好好的过试用期或者第一年的话应该还算可以的
|
17
twogoods 2017-07-05 17:33:39 +08:00 via Android
Java 项目多线程大部分都交给容器了,大部分项目可能就是处理处理方法里线程安全问题,想问个问题多线程到底到哪个份上才算懂?
|
18
facetest 2017-07-05 18:12:36 +08:00 via Android
lz 我来面试你,你也会变成你口中的这种人
|
19
flyico 2017-07-05 18:25:26 +08:00 12
面试造火箭 入职拧螺丝
|
21
esolve OP @armoni 为何面试能进 BAT ? BAT 面试都不问高并发大数据缓存消息队列或者 java 里面比较深一点的问题?
|
23
sagaxu 2017-07-05 18:45:22 +08:00 via Android
你问的这些都是皮毛,随便一搜,看个一会儿就明白了,看没看过的区别,没有门槛
|
26
sagaxu 2017-07-05 18:55:02 +08:00 via Android
@esolve 平时用不到就不看,用到就看,用完就随手一扔,可能没把它当回事,跟背诵 API 没太大不同
|
27
suliuyes 2017-07-05 18:56:42 +08:00 1
N 年 BAT 跑路 Java 狗表示,还好我都会……所以我就来 BB 几句……
这些问题属于 java 基础和现在流行的大型分布式互联网的那套玩意儿。工作多年的外企猿不知道也很正常,因为确实没有实操环境。可能他善于 OA,ERP,SAP 这些领域的业务,属于业务专精型。当然也可能不是拉。 有一说一的说,楼主的项目可能只是拧螺丝,问这些只是因为互联网现在流行问怎么造火箭。而这个面试的同学呢可能平时也并没有刻意去拓展学习,只是正常地完成了自己的本职工作而已。 至于能进 BAT,我倾向于不相信。当然假如是真的,可能性也是有的,因为现在 BAT 有些部门的面试官特别注重业务开发,而有些面试官特别喜欢问高大上的原理,有些甚至就是 996 流失率太高会看中其他方面的因素所以……。 另外建议楼主以后面试多年 JAVA 狗,算法问题点到即止,不要做为权重问题。:) |
29
twogoods 2017-07-05 19:46:53 +08:00
@esolve hashmap 代码里 rehash 具体的步骤我现在确实已经说不太上来了,散列表要扩容所以才 rehash 嘛,这个地方并发的时候容易出问题,如果让我自己实现一个我会注意这个地方,但我承认现在源代码里怎么写的已经记不得了,所以 hashmap 里 rehash 过程里的并发是会抛异常还是怎么样我不确定,但容器一个典型的并发问题是,100 个线程往里放最终会只得到 90 几个,一些被覆盖了。我乖乖回去复习了..... 平时不用就会忘记这个很正常,也不经常复习的其实也大有人在,我可能就是其中一个,但这不一定就能得出我写不好代码这个结论吧?
|
30
billlee 2017-07-05 20:03:09 +08:00 1
问 Hashmap 为什么线程不安全真不知道怎么答啊,没有特地做同步的情况下,线程不安全不是天经地义的事吗
|
31
visonme 2017-07-05 20:12:34 +08:00
框架,服务架构,设计方法 /软件工程方法这是我在外企四年多接触最多的,顺带像楼主面试的这类人,我想 BAT 业务部分应该也是不少的,大家的着重点不同而已。
ps:企业应用开发 |
32
Jacky001 2017-07-05 20:12:48 +08:00
论面试官自我修养的重要性
|
33
monsoon 2017-07-05 20:13:20 +08:00 via Android
动态代理具体实现步骤、是问 hashmap 为何线程不安全
这两个问题感觉问的很差,前者我感觉这问题问的没水平或者没意义,因为如果不是专门工作中经常用到这个,谁会描述出具体的实现步骤。 后个问题也很有问题,Java 里的 hashmap 就算不 rehash 也基本上不太可能线程安全(比如说 visibility issue ).......所以这个问题我感觉很奇怪...... |
34
Jacky001 2017-07-05 20:28:58 +08:00
我说过我多年前的面试吧,我很自信,因为他们公司的产品,我一个人独立开出来一样的,但我是个人做着玩,人家是公司运营这个。
后来技术负责人过来面我,全程是变成了我给他讲解产品,我在面试他的节奏(这是后来他们坐在一旁的另外一个人告诉我的),甚至我现场给他们解决了一个问题,我更自信了。 后来他们技术总监面试我,后来就被 pass 了。理由是技术总监面试我的问题我没回答上来。我的确是没能回答上他的问题,因为我擅长的是一些内容,但他问的是一些稀奇古怪非常冷门的东西,工作那么多年,我都基本没有用过的。 说这么多,意思就是有时候两方不匹配也没辙,只能面试人员先弄清楚自己要什么样的人,然后多了解下对方是擅长什么。 |
35
SparkMan 2017-07-05 20:35:16 +08:00
|
36
SparkMan 2017-07-05 20:37:05 +08:00
@sagaxu #26 这个背诵 API 没太大不同,完全不认同!如果你想自己写的代码能让大家觉得牛逼,或者能上 infoq,如果不知道这些肯定过不去
|
38
misaka19000 2017-07-05 20:47:24 +08:00 via Android
我觉得问的都算的比较基础的问题吧
|
39
ihuotui 2017-07-05 21:25:07 +08:00 via iPhone
这么多踩楼主,但是我是支持楼主的。业务和技术都重要,技术要求高业务能力也要高。
|
40
donlxn22 2017-07-05 21:41:36 +08:00
BAT 技术荒废的也能很容易进大外企吗?
问题里面 BAT 和大外企的鄙视链怎么来的 |
41
devilyaos 2017-07-05 21:45:08 +08:00 via iPhone
面的可能是外企的业务向的吧,比如 bat 也有做业务的和做底层的.....不过话说一般都得反问一遍这个问题在公司实际项目中的体现....以此来判断这个公司是不是一个靠谱的公司.....
|
42
nullen 2017-07-05 22:20:55 +08:00
我一般在面试别人的会这样问一句:你有没有比较擅长的但是我没有问到的,可以讲一下吗。
|
43
sagaxu 2017-07-05 22:22:02 +08:00
看了楼主的发帖记录,你也是刚学 Java 不久吧
|
44
eyp82 2017-07-05 22:46:25 +08:00 via iPhone 1
感觉外企现在被贴标签了,动不动就外企和技术荒废联系起来,不知平常面对工作也是这样的狭隘思维吗?
即使荒废也是他自己的事跟外企有什么关系,BAT 里也有不少做内部开发。Google, Facebook, Amazon , Apple 这些都是外企,你嘲笑一个人家技术荒废先? 如果是说 IBM 等等,它在美国也不如以前了,跟外不外有什么关系 |
45
miao1007 2017-07-05 22:47:05 +08:00
楼主是没有 Hold 住人家,人家可能是一个业务专家,比如应该去问 ERP,CRM 等高学习曲线的业务,问下调试定位流程。上面那些问题太简单了,是校招水平。
|
47
mingyun 2017-07-05 23:07:52 +08:00
19 楼回复亮了
|
48
snnn 2017-07-05 23:51:42 +08:00 via Android
你不按套路出牌!
你从 leetcode 上抽几道热门题给他,他保管会。 像你这样的,概念背了一大箩筐的,外企才不要呢。 |
49
Lax 2017-07-06 00:38:17 +08:00
现在的小公司最需要的是有能力和有意愿去独立解决一些问题的工程师,如果需求拉动的招聘,还是要实用为主。
面试技术不如自己的,重点看他的经历,是不是有钻研研究精神,有没有说谎;面试技术高过自己的,努力看看对方的格局,能否为我司所用。 一般问对方遇到过什么技术问题,怎么解决的,然后根据情况详细去聊聊。跟问卷一样的问题,只能去问毕业生。 |
50
yangff 2017-07-06 01:01:56 +08:00 4
说起来…… 为什么我要知道 hashmap 为什么线程不安全呢……
你看,我不是搞 java 的,但是从设计上来说,无端的让一个东西线程安全是成本很高的一件事,这个理由就可以让 hashmap 线程不安全了,至于它的实现,那已经和我无关了啊。 就像,你看你吃了几十年的饭,你可能知道铊是有毒的不能乱吃,但是你能说出铊中毒的完整机理吗? 虽然我觉得就你的这个 case 而言,对于一个外企工作的程序员,说出“,说这个**百度**一下依葫芦画瓢就行了,”这句话的时候你们的谈话就应该可以结束了。 |
51
hepin1989 2017-07-06 03:01:03 +08:00 via Android
作为阿里推荐了 n 个人都没通过的,我说一下吧,你的这些问题都会答不上来是肯定不能加入我们团队的。。。没有你说的那么玄乎。不过领域知识也就是说业务知识也是很重要的,上面那些问题不需要三百块钱的成本就都可以找到一些答案,可是适合自己系统的,就比较难了。
还有说拿到了别人的 Offer 其实也是一种面试技巧,让你觉得他很牛逼,别人都要了,你还不要?你也不要真的认为他说的就是真的。 |
52
mooncakejs 2017-07-06 07:22:22 +08:00
一般的业务开发不需要深入了解这些,一个团队内,有一个人懂这些就够了,其他人只要照着 interface 实现逻辑就好。
|
54
Betacoefficient 2017-07-06 09:06:43 +08:00
@suliuyes 我来回答造火箭的问题,我个人认为北航那帮在航天工作的,觉得学习的和做工作产出不一致,导致了大疆的 hr 们在大门口拉人的情况。
|
55
sagaxu 2017-07-06 09:45:03 +08:00 via Android 4
@SparkMan 他的问题答案,都是秒懂的东西,没有深度,跟记几个 API 没太大不同。互联网新人,知道 C10K 和 epoll,会调几个异步 API 就号称懂高并发了,会拆表拆库做个 sharding,用 hadoop 和 spark 写几个 hello world 就以为懂大数据了,把几个常见机器学习库调一下就是懂机器学习了,知道几个 jvm 的 gc 算法和几个机制就以为懂 jvm 了。越是理解的浅薄,就越喜欢拿这个当宝去考别人。
|
56
AsisA 2017-07-06 10:12:25 +08:00
我觉得面试就是在针对自己公司的需求招人,考察的是面试者是否适合自己的公司,并不能考察一个人的全部。在面试官没问到甚至面试官不知道的地方,面试者可能非常厉害。
这个“技术荒废”的高级 java 基础技术比较差,但是能拿到 BAT 的 offer,说明他可能在企业业务、企业应用架构、客户沟通等方面很厉害,刚好符合 BAT 的需求 个人愚见 |
57
chinawrj 2017-07-06 10:20:00 +08:00 via Android
你要不面面已经招进来的人,有多少人能过的?不要问你们天天接触到的问题。
|
58
jadetang 2017-07-06 10:24:25 +08:00 2
我点了一下楼主的头像,以下是楼主发的一些帖子。尤其是这个帖子 https://www.v2ex.com/t/351846#reply15
Intellij 上的数据库工具可以直接更新数据库的值吗? mybatis 和 mysql 配置下,默认的事务隔离级别是不是 repeatable read ? Java8 里 接口的静态方法有啥用? Intellij 里同一 project 下不同模块可以设置不同的 maven settings.xml 吗? Intellij 里 maven 的命令和运行 tomcat 之间有关联吗? Intellij 对一个已有的项目,有打开,导入,从源文件创建等几种方式,究竟如何选择啊? Intellij 中 maven project 出现红色警线是什么状况? 大家写 Java 业务代码里,Java 高级特性用的多不? 试用期一个礼拜后跳槽,要求公司给工资不? 注解是如何保证注值的,原理是啥? IDEA 和 Eclipse 的 maven 会有冲突吗? 老外吐槽中国 Java 码农的招聘要求 |
59
maomaomao001 2017-07-06 10:30:43 +08:00 via Android
这问题就像,某某语言,数组长度是 lenght 还是 lenght() 一样
|
61
hustlike 2017-07-06 10:39:25 +08:00
你说的外企是 google 还是微软?
|
65
qinxi 2017-07-06 11:50:11 +08:00
|
67
deadEgg 2017-07-06 12:25:17 +08:00
楼上打脸了,说实话原来 bat 实习面这些都答的出来。面试官也爱问这些
至于为什么爱问这些因为你本科生,研究生工作经验几乎没有,问你别的你也答不出来。 lz 去招一个有经验的人来问这些东西只能说明 lz 本身水平不咋地。 bat 我去过,现在在家外企,技术氛围是有差异,但是吊打 lz 这种水平应该好吊打 |
69
smallTree 2017-07-06 13:34:04 +08:00
这些我问题我都背下来能进 BAT 吗 认真脸
|
70
HYSS 2017-07-06 13:34:07 +08:00
楼主作为一个 mysql 字段重命名都不知道的人就别..................
|
71
stancaohua 2017-07-06 14:29:24 +08:00
hashmap resize 的时候会死循环?所以线程不安全?
我不知道答案是啥,我也不搞 java,前两天看了篇文章而已。 |
74
AlwaysBee 2017-07-06 15:25:52 +08:00
@tiancaiamao 这么多回复就服大师你😁
|
75
Vamposine 2017-07-06 18:16:04 +08:00 via iPhone
这些刚毕业的时候还都记得比较清楚,现在已经想不起来了
|
76
Miy4mori 2017-07-07 14:53:18 +08:00 via iPhone
估计人家也想吐槽你问的不知所云
|