Kacam.net

दुनिया को देखें

इंटरव्यू के सवाल: एक रटा-रटाया सवाल, पाँच परत नीचे तक

सवाल वही होता है जिससे इंटरव्यूअर शुरुआत करता है — «प्रोसेस और थ्रेड में फ़र्क़ क्या है», «TCP बनाम UDP»। किताबी परिभाषा मंज़िल नहीं, शुरुआत है: पहले वह आपका रटा हुआ जवाब रिकॉर्ड करता है, फिर पाँच परत नीचे तक खींचता है, और आख़िर में साठ सेकंड में दोबारा सुनाने को कहता है।

ये प्रॉम्प्ट अभी सिर्फ़ 简体中文 में हैं।

इसे कैसे इस्तेमाल करें

यह सेट पढ़ाता नहीं, कुरेदता है। यह नक़ली इंटरव्यू है: जवाब न बचना सामान्य नतीजा है, और अटक जाने पर न यह आपको बचाएगा, न आपका वाक्य पूरा करेगा। अगर विषय समझना है, इंटरव्यू की रिहर्सल नहीं, तो «कंप्यूटर सिस्टम», «डेटाबेस» या «एल्गोरिदम» देखिए — वहाँ का रवैया राह दिखाने का है।

एक रटा-रटाया सवाल चालीस मिनट कैसे भरता है: पाँच परतों की सीढ़ी

  • परत 1 · परिभाषा — हर शब्द का मतलब क्या है और फ़र्क़ क्या हैं। जवाब नहीं: आपने कभी पढ़ा ही नहीं।
  • परत 2 · तंत्र — यह फ़र्क़ असल में किस ढाँचे के किस क़दम से पैदा होता है। जवाब नहीं: आपने सिर्फ़ निष्कर्ष रटा है।
  • परत 3 · आँकड़े — कितना फ़र्क़? कितने माइक्रोसेकंड, कितने गुना, कितने I/O। जवाब नहीं: आपने कभी हाथ नहीं लगाया।
  • परत 4 · चुनाव — किसी ठोस स्थिति में क्या चुनेंगे, क़ीमत क्या है, और वह चुनाव कब ग़लत होता है। जवाब नहीं: आप इसे लगा नहीं सकते।
  • परत 5 · सीमाएँ — अभी जो कहा, वह किन हालात में टिकता नहीं। जवाब नहीं: सब रटा है, पर समझा नहीं।

कसौटी: परत 4 तक पहुँचना इंटरव्यू पास करने लायक़ है, परत 5 तक पहुँचना सच में समझना है, और जो परत 1 पर रुक जाए वह सब रटा हुआ दर्ज होता है।

छह अंक — पहला और आख़िरी सिर्फ़ इसी सीरीज़ में हैं

  • पहले अंक में वह न टोकता है, न टिप्पणी करता है, न इशारा देता है: आप एक ही साँस में अपना मौजूदा जवाब सुना देते हैं और वही आधार-रिकॉर्डिंग बन जाता है। यह चुप्पी जानबूझकर है — वह सुन रहा है, बस अभी सुधार नहीं रहा।
  • बीच के चार अंक सीढ़ी से नीचे उतरते हैं; असली मैदान तीसरा अंक है — तंत्र और आँकड़े।
  • आख़िरी अंक साठ सेकंड की घड़ी लगाकर सब दोबारा कहलवाता है और आपके शुरुआती जवाब के साथ रखकर मिलाता है — क्योंकि इंटरव्यू में सौंपना «मैं समझता हूँ» नहीं होता, वह एक ऐसा वाक्य होता है जो आप बोलकर दिखा सकें।

शुरू कैसे करें

  1. एक चुनिए, खोलिए, प्रॉम्प्ट कॉपी कीजिए।
  2. उसे बिलकुल नई बातचीत में चिपकाइए, कुछ मत कहिए, पहले सवाल का इंतज़ार कीजिए।
  3. फिर इंटरव्यू की तरह जवाब दीजिए: अपना रटा हुआ जवाब एक ही साँस में सुना दीजिए। ख़राब रहे तो कोई बात नहीं — आख़िर में तुलना इसी से होनी है।
  4. इसके बाद कुरेदना शुरू होगा। जवाब न बचना सामान्य नतीजा है: यह पढ़ने की सामग्री नहीं, नक़ली इंटरव्यू है।

बीच में कभी भी बोले जा सकने वाले पाँच आदेश

  • 跳过 अभी अगले अंक पर चलो
  • 提示 जवाब नहीं, एक इशारा दो
  • 直说吧 पूरा जवाब सीधे बता दो
  • 重讲 सीधे आख़िरी अंक पर जाओ, साठ सेकंड वाला जवाब दोबारा रिकॉर्ड करो और शुरुआती से मिलाओ
  • 复盘 सीधे समापन पर जाओ और समीक्षा कार्ड निकालो

तीन फंदे

  • जो पाठ आप कॉपी करते हैं उसके अंत में जाँचने वाली कुंजी लगी है — उसे पहले मत पढ़िए। उसमें एक ख़ाना «रटने के निशान» का है: ठीक वही वाक्य जो आपके मुँह से निकलने की सबसे ज़्यादा संभावना है। पढ़ लिया तो अभ्यास के लिए कुछ बचता ही नहीं।
  • जहाँ संख्या चाहिए वहाँ विशेषण मत दीजिए। «बहुत तेज़», «ख़र्च नाम मात्र का» — वह वहीं रोककर आँकड़ा माँगेगा। जिस निष्कर्ष का परिमाण न बता सकें, वह रटा हुआ दर्ज होता है।
  • आख़िरी दो समूह भाषा से बँधे हैं: Java लिखते हैं तो Java वाला, Go लिखते हैं तो Go वाला। ये एक-दूसरे का अनुवाद नहीं हैं — दोनों के सवाल अलग चुने गए हैं — इसलिए दोनों करने की ज़रूरत नहीं।

अगले हफ़्ते बैकएंड का इंटरव्यू है? प्रोसेस बनाम थ्रेड, TCP बनाम UDP, B+ ट्री क्यों, आइसोलेशन लेवल, कैश के तीन तरह से टूटने के ढंग, और आइडेम्पोटेंसी — ये छह सबसे ज़्यादा पूछे जाते हैं और आपस में लगभग नहीं टकराते। इंटरव्यू में पिट चुके हैं और कमज़ोरियाँ ढूँढनी हैं? पहले «URL डालने से पेज दिखने तक» कीजिए — यह सारी कमज़ोर कड़ियाँ एक साथ खोल देती है, फिर उसी हिसाब से आगे चुनिए।

ऑपरेटिंग सिस्टम और कन्करेंसी

进程和线程的区别
「进程是资源分配的最小单位,线程是 CPU 调度的最小单位」—— 然后呢?
★★★☆☆ · लगभग 45 मिनट
同步、异步、阻塞、非阻塞
「同步就是要等,异步就是不用等」—— 这句说完,问题才刚开始。
★★★★☆ · लगभग 40 मिनट
select、poll、epoll 的区别
「select 有 1024 限制、epoll 是 O(1)」—— 两句都对,但都不是答案。
★★★★☆ · लगभग 40 मिनट
死锁:怎么产生、怎么破、怎么查
四个条件背得滚瓜烂熟 —— 那你们代码里真的破了哪一条?
★★★☆☆ · लगभग 40 मिनट
乐观锁和悲观锁
「乐观锁假设不会冲突」—— 那你说得出你们那张表的冲突率吗?
★★★☆☆ · लगभग 35 मिनट
线程池的参数怎么定、满了会怎样
参数表说得出来的人很多,说得出这几个参数谁先谁后的很少。
★★★☆☆ · लगभग 40 मिनट

नेटवर्किंग

TCP 和 UDP 的区别
「TCP 可靠、UDP 不可靠」—— 那「可靠」到底承诺了什么?
★★★☆☆ · लगभग 40 मिनट
三次握手为什么不是两次、TIME_WAIT 为什么是 2MSL
「三次是为了确认双方收发能力正常」—— 举一个两次会出事的例子。
★★★★☆ · लगभग 40 मिनट
HTTPS 凭什么安全(TLS 握手)
「HTTP + SSL,用非对称加密」—— 那你的数据是非对称加密的吗?
★★★★☆ · लगभग 45 मिनट
从输入 URL 到页面出来
全系列最长的一道。它会在你讲到一半时打断你 —— 这才是真实的面试。
★★★★☆ · लगभग 50 मिनट
HTTP/1.1、2、3 的区别
「HTTP/2 有多路复用所以更快」—— 那它把队头阻塞解决干净了吗?
★★★★☆ · लगभग 40 मिनट
Cookie、Session、Token、JWT
「token 存客户端所以更好扩展」—— 那你怎么让一个 token 立刻失效?
★★★☆☆ · लगभग 40 मिनट
四层和七层负载均衡
「四层快、七层功能多」—— 差别其实只有一条,你说得出是哪条吗?
★★★☆☆ · लगभग 35 मिनट

डेटाबेस

为什么索引用 B+ 树,不用哈希、B 树、跳表
「B+ 树效率高、适合范围查询」—— 那为什么不是哈希、B 树、跳表?
★★★★☆ · लगभग 40 मिनट
四种隔离级别、幻读到底是什么
「可重复读解决了幻读」—— 真的解决干净了吗?给个反例。
★★★★☆ · लगभग 40 मिनट
MVCC 是怎么实现的
「多版本,读不加锁」—— 那「多版本」具体存在哪儿?
★★★★☆ · लगभग 40 मिनट
redo log、undo log、binlog 和两阶段提交
全系列最难的几道之一:崩溃恰好发生在那一瞬间,数据还对得上吗?
★★★★★ · लगभग 45 मिनट
分库分表之后,你失去了什么
「数据量大了就分库分表」—— 分完之后,你失去了什么?
★★★★☆ · लगभग 40 मिनट

कैश और मैसेजिंग

Redis 为什么快、「单线程」指的是哪一部分
「基于内存、单线程、多路复用,所以快」—— 那「单线程」指的是哪一部分?
★★★☆☆ · लगभग 40 मिनट
缓存穿透、击穿、雪崩
穿透、击穿、雪崩 —— 先别说方案,说清你指的是哪一种。
★★★☆☆ · लगभग 35 मिनट
缓存和数据库怎么保持一致
「先更新数据库再删缓存」—— 那这套做法的反例长什么样?
★★★★☆ · लगभग 40 मिनट
RDB、AOF 和主从复制
「有持久化也有主从,所以不会丢」—— 那主库挂掉那一刻呢?
★★★★☆ · लगभग 40 मिनट
分布式锁怎么做才对
「setnx 加个过期时间就行」—— 然后它会一个一个坑问过来。
★★★★☆ · लगभग 40 मिनट
消息怎么做到不丢不重
「生产确认 + 持久化 + 手动 ACK,就不丢不重了」—— 真的吗?
★★★★☆ · लगभग 40 मिनट

डिस्ट्रिब्यूटेड सिस्टम और आर्किटेक्चर

CAP 和 BASE
「三个里只能选两个」—— 那你真的有得选吗?
★★★★☆ · लगभग 35 मिनट
分布式事务几种方案怎么选
全系列最难的几道之一。先证明你真的需要它。
★★★★★ · लगभग 45 मिनट
分布式 ID 怎么生成
「雪花算法:时间戳 + 机器号 + 序列号」—— 那机器号谁给你分?
★★★☆☆ · लगभग 35 मिनट
限流:三种算法和真实部署
三种算法都说得出来 —— 那你那个阈值是怎么定的?
★★★★☆ · लगभग 40 मिनट
幂等怎么设计
「加张去重表判断一下」—— 先说清:谁在重复,多久内算重复?
★★★★☆ · लगभग 35 मिनट
熔断、降级、隔离
「熔断降级保证稳定」—— 熔断打开那一刻,用户看到的是什么?
★★★☆☆ · लगभग 35 मिनट

Java और JVM

Java 是值传递还是引用传递
「基本类型值传递、对象引用传递」—— 这是一个错误答案。
★★★☆☆ · लगभग 35 मिनट
JVM 内存区域,一个对象的一生
区域图谁都会画 —— 那跟着一个对象走一遍呢?
★★★★☆ · लगभग 40 मिनट
GC 怎么判断垃圾、一次 Full GC 意味着什么
全系列最难的几道之一:你线上一次 Full GC 停多久、上次是什么触发的?
★★★★★ · लगभग 45 मिनट
HashMap 的原理、它的线程不安全表现在哪
「数组 + 链表 + 红黑树,负载因子 0.75」—— 那容量为什么必须是 2 的幂?
★★★★☆ · लगभग 40 मिनट
synchronized 和 Lock、锁升级四个状态
锁升级四个状态背得出来 —— 那每一级到底省了哪一笔开销?
★★★★☆ · लगभग 40 मिनट
OOM 和内存泄漏怎么定位
「dump 下来用工具看一下」—— 先说清,它报的是哪一种 OOM?
★★★★☆ · लगभग 40 मिनट

Go और उसका रनटाइम

GMP 调度模型
「G 是协程、M 是线程、P 是处理器」—— 那为什么非要有 P?
★★★★☆ · लगभग 40 मिनट
channel 的底层和 select
「无缓冲 channel 会阻塞」—— 它是一个长度为 0 的队列吗?
★★★★☆ · लगभग 40 मिनट
slice 和 map 的那些坑
「slice 是动态数组」—— 那把它传进函数改一下,外面看得见吗?
★★★★☆ · लगभग 40 मिनट
defer、panic、recover
「defer 延迟执行、后进先出」—— 那它的参数是什么时候求值的?
★★★★☆ · लगभग 35 मिनट
逃逸分析:这个变量在栈上还是堆上
「返回局部变量的指针就会逃逸」—— 那判据到底是什么?
★★★☆☆ · लगभग 35 मिनट
Go 的 GC 和 STW 到底停多久
全系列最难的几道之一:「STW 很短」—— 短到多少,停在哪两处?
★★★★★ · लगभग 40 मिनट
ये प्रॉम्प्ट ओपन सोर्स हैं मूल पाठ सार्वजनिक रिपॉज़िटरी kacam-net/hero-prompts में रखा जाता है। लगे कि कोई पर्याप्त सख़्ती से नहीं कुरेदता, या उसकी कुंजी में एक पंक्ति छूट गई है, तो जाकर बदल दीजिए — यहाँ चढ़ेगा या नहीं, यह अलग फ़ैसला है और इस तरफ़ की सूची तय करती है।