“小米,你面试那家十八线大厂的 JVM 题都问了啥?”
“栈和队列!你猜我怎么答的?我直接讲了个日常故事,面试官听完都笑了——然后就让我进二面了!”
社招面试现场,小米又被问到“老问题”
事情发生在不久前的某次 JVM 社招面试中。作为一个写 Java 写了快十年的开发者,我对 JVM 这块多少还是有点底气的。可没想到,刚坐下,面试官的第一个问题却不是问 GC,也不是类加载,而是:
“你能说说什么是栈和队列吗?它们在 JVM 里有什么应用,区别又在哪里?”
你是不是也觉得这题太基础了?但我告诉你——越基础的题目,越能看出候选人的基本功和表达能力。
我当时没有急着丢概念,而是笑着说:
“那我就给您讲个故事吧,栈和队列的故事,就像生活中我们排队买奶茶和叠衣服的过程一样。”
从生活场景讲起:奶茶店和衣柜
故事一:排队买奶茶——这是“队列”Queue
想象一下你中午和同事去奶茶店,人太多了,你只能排队。
每来一个人,都排在你后面;而奶茶店做完一个奶茶,是先给最前面那位顾客,对吧?这就是典型的先进先出(FIFO)的规则:
- 谁先来,谁先拿;
- 后来的人只能等前面