Kacam.net

Vedere il mondo

Domande da colloquio: una domanda da manuale, cinque strati più giù

La traccia è esattamente la frase con cui un selezionatore apre: «che differenza c'è tra processo e thread?», «TCP o UDP?». La definizione da manuale non è il traguardo, è la partenza: prima registra la versione che hai già imparato a memoria, poi ti trascina cinque strati più giù e alla fine te la fa ridire in sessanta secondi.

Per ora queste istruzioni esistono solo in 简体中文.

Come si usa

Questa serie incalza, non insegna. È un colloquio simulato: restare senza risposta è un esito normale, e non ti copre né ti finisce la frase quando ti blocchi. Se vuoi capire un argomento invece che provare per un colloquio, vai su Sistemi informatici, Database o Algoritmi: lì la postura è guidarti.

Come una domanda da manuale riempie quaranta minuti: la scala a cinque strati

  • Strato 1 · Definizione — che cos'è ciascun termine e quali sono le differenze. Senza risposta: non l'hai mai studiato.
  • Strato 2 · Meccanismo — quale struttura e quale passo producono davvero quella differenza. Senza risposta: hai imparato solo la conclusione.
  • Strato 3 · Numeri — di quanto? Quanti microsecondi, quante volte, quanti I/O. Senza risposta: non ci hai mai messo le mani.
  • Strato 4 · Scelta — in un caso concreto quale scegli, a che prezzo e quando quella scelta è sbagliata. Senza risposta: non lo sai applicare.
  • Strato 5 · Limiti — in quali condizioni tutto quello che hai appena detto smette di reggere. Senza risposta: lo sai tutto a memoria, ma non l'hai capito.

L'asticella: lo strato 4 è ciò che supera un colloquio, lo strato 5 è averlo capito davvero, e tutto ciò che si ferma allo strato 1 viene segnato come imparato a memoria.

Sei atti — il primo e l'ultimo esistono solo qui

  • Nel primo atto non interrompe, non commenta e non suggerisce: sciorini d'un fiato la versione che hai, e viene registrata come base di partenza. Il silenzio è voluto — sta ascoltando, semplicemente non ti sta ancora correggendo.
  • I quattro atti centrali scendono la scala; il vero campo di battaglia è il terzo: meccanismo e numeri.
  • L'ultimo atto mette sessanta secondi sul cronometro e te la fa ridire, affiancata alla versione d'apertura — perché quello che un colloquio chiede non è «ho capito», è una frase che riesci a dire ad alta voce.

Come iniziare

  1. Scegline una, aprila, copia il prompt.
  2. Incollalo in una conversazione nuova di zecca, non dire nulla e aspetta la prima domanda.
  3. Poi rispondi come a un colloquio: sciorina d'un fiato la tua versione a memoria. Non importa se viene male — è la base con cui verrà confrontata alla fine.
  4. Da lì in poi comincia a incalzare. Restare senza risposta è un esito normale: questo non è materiale di studio, è un colloquio simulato.

Cinque comandi che puoi lanciare in qualunque momento

  • 跳过 passa subito all'atto successivo
  • 提示 dammi un indizio, non la risposta
  • 直说吧 dimmi la risposta completa
  • 重讲 salta all'ultimo atto, rifai la versione da sessanta secondi e confrontala con quella d'apertura
  • 复盘 salta alla chiusura e stampa la scheda di bilancio

Tre trappole

  • Il testo che copi ha la soluzione in fondo: non leggerla prima. Una delle sue colonne si chiama «impronte da recita»: sono esattamente le frasi che con ogni probabilità ti usciranno di bocca. Leggerle significa non avere più niente da allenare.
  • Non dare aggettivi dove serve un numero. «Molto più veloce», «il costo è trascurabile»: ti ferma sul posto e chiede la cifra. Una conclusione senza ordine di grandezza viene segnata come imparata a memoria.
  • Gli ultimi due gruppi sono legati a un linguaggio: quello Java se scrivi Java, quello Go se scrivi Go. Non sono la traduzione l'uno dell'altro — ciascuno sceglie le proprie domande — quindi non serve farli entrambi.

Colloquio backend la settimana prossima? Processo e thread, TCP e UDP, perché gli alberi B+, livelli di isolamento, i tre modi in cui la cache cede e idempotenza: le sei più frequenti e quasi senza sovrapposizioni. Ti hanno demolito ai colloqui e cerchi le falle? Parti da «dall'URL alla pagina a schermo»: mette allo scoperto tutti i punti deboli in un colpo solo, e da lì scegli le prossime.

Sistemi operativi e concorrenza

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

Rete

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

Database

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

Cache e messaggistica

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

Sistemi distribuiti e architettura

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

Java e la JVM

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

Go e il suo runtime

GMP 调度模型
「G 是协程、M 是线程、P 是处理器」—— 那为什么非要有 P?
★★★★☆ · circa 40 min
channel 的底层和 select
「无缓冲 channel 会阻塞」—— 它是一个长度为 0 的队列吗?
★★★★☆ · circa 40 min
slice 和 map 的那些坑
「slice 是动态数组」—— 那把它传进函数改一下,外面看得见吗?
★★★★☆ · circa 40 min
defer、panic、recover
「defer 延迟执行、后进先出」—— 那它的参数是什么时候求值的?
★★★★☆ · circa 35 min
逃逸分析:这个变量在栈上还是堆上
「返回局部变量的指针就会逃逸」—— 那判据到底是什么?
★★★☆☆ · circa 35 min
Go 的 GC 和 STW 到底停多久
全系列最难的几道之一:「STW 很短」—— 短到多少,停在哪两处?
★★★★★ · circa 40 min
Questi prompt sono open source Il testo è mantenuto nel repository pubblico kacam-net/hero-prompts. Se uno non incalza abbastanza, o alla sua soluzione manca una riga, vai a cambiarlo: che finisca online qui è un'altra decisione, la prende il catalogo da questa parte.