小弟是要去面试 java 程序员的,这是我的第一次面 java 的,不知道怎么才能选出一个合适的 java 开发,题目不用太难,我们公司只要找个不坑的就行,网上的面试题要不太基础,要不就是太难了。
![]() |
1
noNOno 2018-08-13 17:13:11 +08:00
有个办法,出题的时候自己先想好正确答案,然后看他的思路.
一个题目没办法简单甄别人的能力,每个人都不一样. |
2
glacer 2018-08-13 17:14:18 +08:00 via iPhone
非递归遍历二叉树
|
![]() |
3
Torpedo 2018-08-13 17:14:30 +08:00 via Android
问面试的,你现在工资多少?
|
![]() |
4
rabbbit 2018-08-13 17:17:08 +08:00
手写非递归翻转二叉树
|
5
yishuiliunian 2018-08-13 17:17:40 +08:00
问之前做的项目啊
|
![]() |
7
zzf2017 OP @yishuiliunian 项目要问,但是先要技术刷掉一波吗
|
![]() |
8
lonelygo 2018-08-13 17:27:58 +08:00
上来就手写算法,7 成估计都要刷了。
还是问之前的项目,具体他做什么,找一个你明白的详细聊聊他的实现,根据干的活决定再问点什么有难度的事情。 |
9
yishuiliunian 2018-08-13 17:28:48 +08:00
@zzf2017 他说项目的时候,顺道问了呗。凭空让他说知识点,只能考察他的记忆能力。你面试无非是想看这个人做事情靠谱不靠谱嘛,靠谱的进,不靠谱的就不要了。所以直接问他如何做事情,处理问题,更直接。
|
![]() |
10
yonoho 2018-08-13 17:32:36 +08:00
基础水平可以在 CS 主要课程里每门选一个经典知识点,能答个 7788 就不算坑。要拔高一点的话在网上搜一个 CS puzzles,能解出来直接过,解不出来有明确思路也可以。
|
11
glacer 2018-08-13 17:43:25 +08:00
@zzf2017 那这样不是很好么,不浪费时间。二叉树遍历本身就不是什么难题,递归的写法又特别简单,面试者也很少会特意再去记非递归的写法。我之前面过几个人都要求写过非递归的二叉树遍历,基本上一开始都会懵掉,最后完整写出来的也比较少。
|
![]() |
12
OctopusGO 2018-08-13 17:44:12 +08:00 via Android
我一般是直接上机
|
![]() |
13
Itanium 2018-08-13 17:44:28 +08:00 ![]() 核动力 航母压水堆设计,要求白板手写
|
![]() |
14
imdong 2018-08-13 17:44:57 +08:00 ![]() 基础会,思路有,性格好。
|
15
ala2008 2018-08-13 17:45:03 +08:00
int 多少个字节。已经过滤一大帮培训出来的 :)
|
![]() |
17
Light3 2018-08-13 17:58:18 +08:00
先出个简单的手写题 然后坐着看他写 基本能写出来就 ok
然后照着简历 问一遍 基本说得出来 是自己做的 就算不坑的。。 |
18
casztg 2018-08-13 17:58:40 +08:00
赞同 8 楼的·
|
![]() |
19
zhangwugui 2018-08-13 18:05:20 +08:00
@imdong 我同意老哥的。首先,基础要不错,这样学东西也快。另外,有一些想法,思路什么的最好,
|
![]() |
20
cxh116 2018-08-13 18:06:59 +08:00 via Android ![]() unicode 和 utf-8 的区别。
|
![]() |
21
imdong 2018-08-13 18:11:14 +08:00
之前面试的思路,先问一些简单的问题看下基础掌握情况,
然后依据简历项目挑一个和自己项目相近或者感兴趣的(且是他主导完成的) 着重了解这个项目与他的思路做法难点 心得。 这两个弄完了,就问思路方面,我是 PHP 就准备了这样一个面试+机试题: 给你一个 txt 文件,里面有四行,每行分别对应多个时间人物事件地点,每行用,分割 例如: ==data.txt== 张三,李四,王五,赵六 北京,上海,广州,深圳 ==== 然后要求实现任何用户访问第一次访问某个 html 文件时 根据随机生成一句话 谁在哪里做什么。 以后再次访问时不再重新生成。 代码比较简单,考察几个面也是比较基础的 伪静态( Url 重写),文本处理,数组操作,和一点思路。 最后上机看代码风格... 就这样,都特喵好多做不到的,我感觉要求不高啊。 |
![]() |
22
lyog 2018-08-13 18:19:10 +08:00 ![]() hashmap 的源码,手写线程安全的单例,多线程中锁的使用,ssm 或者 ssh 下文件上传的流程,spring 的事务管理,简单的 sql 查询,分区分库分表索引,jvm 内存区域模型,手写快排或者二叉树的高度,这些都属于比较基础得了,适合新手或者一年左右的开发,可以根据这些一点一点往上问。
|
![]() |
23
Rekkles 2018-08-13 18:19:23 +08:00 ![]() 面试是发掘别人的优点和长处,不是考察别人不会什么,对着简历上他擅长的去问就好了
|
24
wuhhhh 2018-08-13 18:44:24 +08:00 via Android
@ala2008 21e 这个是个游戏梗,某游戏伤害突破 21e 后,伤害会变成 1,成为了冲钱越多越弱鸡的一个笑话,因为这个就是拿 int 来计算的
|
![]() |
25
Raynard 2018-08-13 18:51:26 +08:00
本市哪家医院的大夫治疗颈椎病和腰间盘突出水平好
|
![]() |
28
zjsxwc 2018-08-13 19:24:42 +08:00 via Android
之前招前端,主流框架都会用,但是我让他编程实现矩阵乘法运算,他就不会了,汗
|
![]() |
29
loryyang 2018-08-13 19:34:07 +08:00
写代码吧,你招人不就为了写代码嘛。如果不喜欢面算法题,那就抽象一个实际的问题给他写
我觉得 leetcode 里面类似 system design 的题目都挺不错的,比如 https://leetcode.com/problems/insert-delete-getrandom-o1/description/ https://leetcode.com/problems/lru-cache/description/ 这种题目如果觉得太难,就先让回答思路,思路 OK,就提供代码框架,已经有一部分代码,剩下的让面试者填空 |
![]() |
31
loryyang 2018-08-13 19:37:06 +08:00
哦,对了,不太建议出大众代码题,这不就是考记忆力嘛。什么考烂了的题目千万别出,特别是排序,int to string,string to int 这种。背过的写得贼 6,没背过的写的吐血
|
32
lk0317 2018-08-13 19:43:59 +08:00 via Android
leetcode medium 算法题,不要挑太热门的那类。
候选人没思路不要紧,你完整告知思路和每一个细节,能照你说的写出来的一般都不差。 |
34
lk0317 2018-08-13 19:47:34 +08:00 via Android
才看到说是小公司,就那不要考算法题了。问问 InnoDB 索引用的什么数据结构,读取时间复杂度,为什么用这样的数据结构。能答上来的起码具有 MySQL 中级知识,懂基本数据结构重要概念。
|
![]() |
35
wdlth 2018-08-13 19:48:22 +08:00 via Android ![]() 让面试者手写算法,然后面试官同时写,面试官写不出来滚蛋,让面试者上?
|
![]() |
38
d18 2018-08-13 20:12:52 +08:00
感觉有时候面试也要看运气。因为面试官自己知识面也有限,他可能挑着自己会的问,那要是刚好他问的我没深入了解过,不就完蛋了。毕竟一个人的时间精力是有限的,不可能什么都接触,什么都去深入了解原理源码。
|
![]() |
39
winglight2016 2018-08-13 20:27:03 +08:00
说实话,如果不是大公司的话,基本上是你求着人来上班,那你要考虑清楚,是先招一个进来背锅呢?还是刷掉几十个人之后再随便找一个背锅呢?
|
![]() |
40
Felldeadbird 2018-08-13 20:52:37 +08:00 via iPhone ![]() 没有 cookie 如何鉴权…我最喜欢这题了。
|
41
woodface2233 2018-08-13 20:54:07 +08:00 via iPhone
@ala2008 是,8 个字节么?还是 32 个 bit ?
|
![]() |
42
yanaraika 2018-08-13 20:56:14 +08:00
1. what happened when you open v2ex.com 。为了防止背答案问一些如果某某环节出现特殊情况会怎么处理。
2. 找点 implementation 的算法题让对方写,简单的 Regex match 之类的 |
![]() |
43
pipapa 2018-08-13 21:03:12 +08:00
@woodface2233 32bit 是 4 個字節
|
44
woodface2233 2018-08-13 21:18:44 +08:00 via iPhone
@pipapa 朕知道的
|
![]() |
45
learnshare 2018-08-13 21:19:35 +08:00
不考任何技术细节
给实际问题,让他自己思考并解决,顺带坦白了自己的经验和能力 |
![]() |
46
bhagavad 2018-08-13 21:41:08 +08:00 ![]() 瞎扯蛋说下我的面试流程吧:
面试前: 先看简历,了解对方的基本情况;如果有 github 或者博客的,就看一下对方的具体代码及知识结构;如有上线的产品,把感兴趣的以及有问题的地方都记录下来,面试的时候当面问。 面试中: 从流程来讲: 1、面试官自我介绍及介绍公司概况 2、让面试者自我介绍 3、根据面试者详细介绍自己的项目 4、结合简历询问相关问题 5、QA 从技术角度: 1、基本的编码能力:比如写个单链表翻转 2、基本的数据结构知识:链表、数组、List、Map 等 3、基本的操作系统知识:进程通讯、线程通讯、线程安全等 5、基本的网络知识: http、socket、websocket、poll、epoll 等 6、具体的专业知识:比如 Android 工程师就要问些 Android 的基础知识 除了笔试外,面试都是结合简历来问的,一步一步往下走,然后具体到知识点,看一下面试者对于自己写的代码的熟悉程度。比如 Android 常见图片展示列表->三级缓存->HashMap->线程安全->线程通讯->Handler 等。面试的过程中沟通能力、表达能力、团队协作能力等都是可以看出来的。 面试从来不应该是单方面的面试,作为面试官,面试过程中你代表的是公司,不仅仅是你在面试对方,也是对方在面试你的公司,所以要尽可能保持对等的态度。而且面试过程中也是一个互补的过程,你可以通过面试去了解对方的优势。作为面试官,也不要怕被问倒,当然有一些技术性的方式规避,大方承认也是一个不错的选择。 要保持对公司、对面试者负责的态度,要提前看对方的简历。我基本是拿到一份简历要看十分钟以上,面试大概是一个小时的时间,一个面试者基本要花费一个半小时的时间。你提前做没做准备,面试者是能感知到的。 |
![]() |
47
qilishasha 2018-08-13 21:45:29 +08:00 via iPhone ![]() 直接看作品就可以知深浅,那些说得头头是道的还是去做销售吧
|
48
soden 2018-08-13 23:21:33 +08:00 ![]() 大家可能太专业了,我的话我会先问问常去的网站,
像普通的可能就是跑跑 CSDN,博客园,抄抄代码就没了, 有点想法的会去掘金,思否,开源中国等, 稍微搞过代码托管的也说得出 gitee,github,gitlab 如果比较有能力会去用 google 而不止百度,StackOverflow 这些得知道 后面再问问懂不懂 Linux,喜欢哪个发行版,为什么. 这些都可以聊得来的话,我相信他不会是一个愚蠢的码农. 不知道其他 v 友怎么看 |
![]() |
50
watzds 2018-08-13 23:51:25 +08:00 via Android
那些算法题,我是写不熟练的,但是当年校招也能通过腾讯、网易面试,没怎么问算法。
这东西也不难,只是本人不属于记忆清晰,头脑敏捷的人。但是就是能把项目做好。 |
![]() |
51
xieranmaya 2018-08-14 00:02:49 +08:00 via Android
多级排序,然后扯一下排序稳定性
试验过效果很好 问一些底层的也不错,比如楼上 人说的 int 几个字节,秒过滤培训班的。 还有我觉得可以问问数据结构,不用太难,就几个基础的就行 |
52
x86vk 2018-08-14 00:13:47 +08:00 via Android
被某家公司问过一个:设计一个不需要高亮的编辑器的数据结构,要求:
1. 在大部分情况下,能在 1kB 内存中编辑 768 个字符 2. 在满足条件 1 的基础上,越快越好。 设计出后再写出插入字符的代码。 |
![]() |
53
ETiV 2018-08-14 00:27:29 +08:00
Java 就当是后端开发吧~
后端的话,我认为「不坑」的标准就是知道比如 MySQL 查询为什么慢(索引怎么用、为啥某个 SQL 没有用到索引)、Redis 查询为什么慢或者炸(各个数据类型的利弊、单进程)、怎么设计数据落地还能保证数据一致性不出问题 然后就是 Java。除了考察逻辑和编码能力,还要问问经常用的 XX 框架已知的坑怎么避免,安全性如何,blahblah~ 可以问问简单又不常见的算法,让他在 sublime 里写一下。 |
![]() |
54
lightening 2018-08-14 00:44:59 +08:00 via iPhone ![]() Web 行业。
从你按下页面上这个链接,到你看到新页面的内容时间,发生了什么? 前后端可以有侧重,觉得需要重点考察的可以在他说的后问得深入一点。不过,大部分人根本说不完一个闭环。 |
![]() |
55
icyalala 2018-08-14 02:23:09 +08:00
|
![]() |
56
cxh116 2018-08-14 07:35:36 +08:00 via Android
@cncqw 字符编码与乱码是编程中很常见的问题,问了区别,你还可以问其它的字符方面。比如第三方系统用的是 gbk 编码,它提供的接口参数也需要是 gbk 的,在调用它的时候,还需要把参数按参数名的字典序排序,然后再以 query string 格式取得 md5 摘要,请问以你熟悉的语言你大概会怎么处理?
|
![]() |
57
bestkayle 2018-08-14 08:01:06 +08:00 via iPhone
人多就往难了问
|
![]() |
58
simonguo 2018-08-14 08:27:29 +08:00 via iPhone
我一般的流程:
1.笔试考察基础功 2.面试,出一两个逻辑题考察反映能力和思维逻辑能力 3.面试,根据简历上写的精通,项目中的经验深入的问,考察经验及知识面 其他人品相关测试就交给人事去问。 |
59
nicholastsao 2018-08-14 08:31:13 +08:00
@ala2008 培训的不讲 int 多少字节?哪看的
|
![]() |
60
yidinghe 2018-08-14 08:32:43 +08:00 via Android
机试,写得出程序比什么都重要。
|
![]() |
61
20015jjw 2018-08-14 08:33:59 +08:00 via Android
我怎么觉得 leetcode 中高难度合适呢.. 难道遍历二叉树不是基础题么
|
62
JeromeCui 2018-08-14 08:36:21 +08:00
数组和链表的区别:)
|
![]() |
63
nullen 2018-08-14 08:36:51 +08:00
在浏览器输入一个网址按下回车之后到浏览器呈现结果,中间都经历了哪些过程。
|
64
eshezhao 2018-08-14 08:38:00 +08:00
想多了 更多看自己感觉吧
|
![]() |
65
yulitian888 2018-08-14 08:45:03 +08:00
必考题:
描述一下你在项目中遇到的最大的困难或者问题是什么,如何解决的 |
![]() |
66
syyy 2018-08-14 08:47:04 +08:00
@yulitian888 真正的答应应该是,解决了提出需求的人。
|
![]() |
67
ihainan 2018-08-14 09:06:05 +08:00
@20015jjw 循环遍历二叉树也算是 LeetCode 中等难度的题了: https://leetcode.com/problems/binary-tree-inorder-traversal/
我觉得还真有可能不少人一时半会想不出来怎么写。 |
![]() |
68
hanxiV2EX 2018-08-14 09:15:36 +08:00 via Android
做过项目的最好问了,提前看看简历,抓住简历里的项目里列的一些关键词,比如说项目里有个提到了文件上传相关的,可以先问是怎么实现的,前端用了什么库还是自己撸的原生的,有没有考虑文件过大的情况,如果要支持很大的文件有没有什么方案。如果项目有提到登录相关的,可以展开的问题也有很多,根据自己的经验问自己做过的,比如数据库如何设计的,有没有考虑第三方帐号的问题,有没有加盐,密码是明文存储的还是加密的,session 如何管理的。当然一般做 web 的可以问缓存相关的,redis 啥的。为什么要加个缓存等等
|
![]() |
69
hanxiV2EX 2018-08-14 09:23:16 +08:00 via Android
重点就是区分出简历里的项目都是自己做的,培训出来的一般只知道应该这样做,不知道为什么这样做。
|
![]() |
70
jiangjz 2018-08-14 09:24:42 +08:00 via Android
看了楼上的,感觉我找不到工作了
|
71
focux 2018-08-14 09:26:42 +08:00
你对加班怎么看?
|
![]() |
72
e8c47a0d 2018-08-14 09:28:37 +08:00 ![]() 其实程序员能力和以下因素有关
* 搜索能力,翻 x 能力 * 英文词汇量 * 对相关技术的热情程度 除非做底层开发,否则真要用二叉树索引这类题目,即使是能力强的,一时半会还答真不出来,反倒是应试能力高的可以秒答。 如果非要问的话,“ int 有多少位”这种没有标准答案,但直接影响产品质量的题目还算公平。 |
![]() |
73
hanxiV2EX 2018-08-14 09:41:16 +08:00 via Android ![]() @e8c47a0d int 有多少位的问题可以扩展问的,对有经验的人来说,会遇到过一些坑的,比如把数据库字段设置为 int 会有什么问题?不一定要答出 int 有多少位,答出了注意上限就够了,设计系统或者定义某个变量时,被溢出坑过的大多都会这些的。
上面也有是提到编码的问题,可以不用直接问编码的区别和定义,就问遇到过乱码的问题吗?如何解决的。 |
74
DamonLin 2018-08-14 09:43:09 +08:00
描叙一下你做过的项目
|
![]() |
75
yy77 2018-08-14 09:45:02 +08:00
具体要看你需要怎么样的人,才问怎样的题目啊。初级程序员的话,只要能理解开发规范的重要性,能够扎实地说出自己做的东西以及遇到的一二个技术难点和解决方法就行。
楼上满满都是程序员的鄙视链啊。难为人的几种方法: 说知道算法的就问 leetcode 和 hackerrank 之类的刷题进程; 说用过 java 的就问某个类的 java1.8 以上实现源码; 说用过数据库的就问存储实现算法... |
![]() |
76
ioth 2018-08-14 09:46:46 +08:00
微软和一些 500 强(中国不算),第一关一般就是直接智商题。
|
78
lalala121 2018-08-14 09:51:34 +08:00 ![]() 我个人觉得,没有丰富的技术经验不要面试别人,除非公司实在没人了。我记得有次去暴风 TV 面试,面试我的那个小伙子好年轻,问我 git 切换分支什么命令,我告诉他 git branch,结果小伙子说,你再想想,我猜到他要问 git checkout -b 了,但我就是不说。最后他说,你用过 checkout 么?我心里冷笑了一下。我个人觉得面试有三重境界,1.拿自己会的去问别人不会的,这是最 low 的。2.拿具体问题具体场景提问的,这个一般公司应该都能做到,除非你跟我有一样的遭遇。3.抛出一个问题,互相讨论的,在讨论的过程中可以看出面试者的沟通能力,逻辑思维,知识面等。
|
79
ala2008 2018-08-14 09:51:51 +08:00
@nicholastsao 看楼上大佬们的讨论
|
![]() |
80
TheWalkingDead 2018-08-14 09:55:26 +08:00
@ioth 现在不会出这种智力题了
|
![]() |
81
cncqw 2018-08-14 10:00:12 +08:00
@cxh116
utf-8 是 unicode 编码的一种,你问两者的区别实际上个人认为这个问题很没水平,至于你后面说的,已经属于 API 开发,跟编码关系不大,正常人知道只要统一编码即可,而且这种提问方式给人的感觉是前面说一大段无关的话,后面突然来一句“挖掘机技术哪家强”差不多,面试是为了能够找到能够完成工作的人,而不是利用信息不对称以问住应聘者为目的,打铁还需自身硬,事实上,面试者随便给你提个问题,你也可能回答不出来,您觉得是吗 |
![]() |
82
niubee1 2018-08-14 10:01:05 +08:00
现场写一段
|
83
junho 2018-08-14 10:17:09 +08:00
根据简历上列举的技能描述和项目内容去问
没写的就随便问下 有写的就重点问下 |
84
newtype0092 2018-08-14 10:24:21 +08:00
@ala2008 答 4 个字节的也过滤了吧,说明没学好,有请回答大于等于 2 个字节的进入下一轮~
|
85
linuxchild 2018-08-14 10:51:55 +08:00
不是算法工程师还是别面算法了。
对基础的数据结构有个概念知道应用场景也就得了。 搞什么面试造航母,工作拧螺丝。 |
![]() |
86
cstome 2018-08-14 10:56:47 +08:00
面试主要看人,会什么其实真的不重要,或者说不是特别重要。
|
88
galaxyyao 2018-08-14 11:00:43 +08:00 ![]() LZ 的问题里其实缺少了很重要的一个条件,就是面试对象的等级。面试初级 /中级 /高级的方式差别还是挺大的。
既然会让没有面试经验的 LZ 来面试,姑且猜测面试的是初级吧。 上面 Rekkles 回答得很精辟,对着简历上他擅长的去问,不要问不擅长的具体某个知识点。像上面说的问 unicode 编码,实际工作中真的涉及到需要了解到编码细节原理的估计不到 10%。 可以针对候选人实现过的一个具体功能展开地深入地问。比如写了做过注册登录,那么可以问授权 token 生成机制,问密码加密传输存储机制,问验证码验证流程,问注册完整业务流程,问用户主键或编码生成机制,问 spring security 或 shiro,问会话超时,问密码验证失败后的异常处理机制,问多次输错密码后的账号锁定实现,问用户量大到一定程度后如何优化,问用户名 /手机号 /第三方等多种登录方式的实现设计,问异地登录的检测逻辑。 有一些可能候选人并没有实际做过,也没有关系。正好可以看出来候选人对于一个未知问题的解决思路。 另外可以平时工作中遇到问题解决问题的时候,就有意识地记一笔。这样也可以避免平时工作杀鸡,面试问屠龙术。 |
![]() |
89
JerryCha 2018-08-14 11:12:57 +08:00
为什么在 VS 的 debug 模式下,printf 输出 hello world 的时候会很烫
|
![]() |
90
whypool 2018-08-14 11:23:39 +08:00
用空格还是 tab,才是检验大神的
|
91
hellojl 2018-08-14 11:31:35 +08:00
三种思路,一是问算法,二是针对简历写的东西不断 deep dive,三是看自己项目需要掌握哪些技能,针对项目中的难点去问
|
![]() |
92
xiaket 2018-08-14 11:45:06 +08:00
怎么翻墙, 把墙的工作原理和翻墙的工作原理都解释下, 顺便还考察了世界观, 多好.
|
![]() |
93
encro 2018-08-14 11:55:44 +08:00
你做过最复杂的项目或者功能是什么?
|
![]() |
94
est 2018-08-14 12:01:26 +08:00
问他最近遇到最麻烦的技术问题是什么,怎么解决的。
|
![]() |
95
yulitian888 2018-08-14 12:36:29 +08:00
@est 和我#65 的一样
|
![]() |
96
est 2018-08-14 12:57:09 +08:00
@lalala121 想起几个老外的笑话。
面试官:Linux 下返回一个文件 inode 的 syscall 是什么? 回答:不存在这样的 syscall。 面试官:答案是 stat() 回答:stat(), fstat(), lstat(), fstatat() 这些都特么返回的是错误码! 面试官:TCP 握手需要怎么进行包交换? 回答:0x02, 0x12, 0x10 面试官:回答错误。正确答案是 SYN, SYN-ACK, ACK 面试官:看下下面的代码是干嘛的? 回答:sieve of Eratosthenes? 面试官:回答错误。正确答案是质数筛选法。 挺无语的。 |
97
gomars 2018-08-14 12:57:31 +08:00
聪明,听话
|
![]() |
98
Mac 2018-08-14 12:59:36 +08:00
你能不能根据手机壳颜色来变 APP 主题色
![]() |
![]() |
99
congeec 2018-08-14 13:09:34 +08:00
https://www.geeksforgeeks.org/program-for-nth-fibonacci-number
fibnacci 序列求和。是个人就能答出来一些,就看省深入多少了 |
![]() |
100
jswh 2018-08-14 14:18:05 +08:00
写....写个 router ?
|