这是啥

是一系列经典的、开放式的后端开发题目,不是具体的问题,而是以点带面、适合抛砖引玉,再逐步深入考察,源于Github工程↓

问题分为通用基础、设计、语言等多个方面,这里挑出了我自己感兴趣的部分准备慢慢深入回答,记录进度。强烈推荐各位后端开发同学们也来思考一波,来啊学习啊快活啊答完你就成仙了


列表(完成度:10.5/69)

  • 语言设计中空引用(null reference)的存在有什么问题?将空引用从编程语言中移除可能导致什么结果?
  • 什么是实时系统?它与普通系统有什么区别?
  • 实时语言(real-time language)和堆内存分配(heap memory allocation)之间的关系是什么?
  • 如果你需要使用缓存,你使用哪些原则来确定缓存大小?
  • 在客户端渲染(client-side rendering)和服务端渲染(server-side rendering)之间,你如何权衡?
  • 如何在一个不可靠的协议之上构建一个可靠的通信协议?
  • 解释什么是流(streaming)和如何实现一个流?
    • 解释
    • 实现
  • 在你当前的工作流中,什么事情是你计划下一步需要自动化的?
  • 当你在浏览器输入google.com时发生了什么(age old question)?
  • 当操作系统CPU处于空闲的时候,它可能在处理哪些事情?
  • 如何向一个五岁的孩子解释什么是Unicode/数据库事务?
  • 一个“专业的开发者”意味着什么?
  • “喜欢这个的人也喜欢……”,如何在一个电子商务店里实现这种功能?
  • 假设你工作的系统不支持事务性,你会如何从头开始实现它?
  • Active-Record模式有什么限制和缺陷?
  • 写一个线程安全的单例类
  • 你是如何处理Dependency Hell的?
  • 内聚和耦合的区别是什么?
  • 在存储过程(Stored Procedures)中写业务逻辑有什么优缺点?
  • 告诉我你的首选语言的三个最坏的缺陷
  • 闭包是什么?它有什么用途?闭包和类有什么共同点?
  • 用一个例子说明匿名函数是有用的
  • 命名空间有什么用?有什么可以替代他的吗?
  • 谈谈JAVA和C#的互操作性?(或者任选其他两门语言)
  • 你认为好的语言好在哪里?坏的语言坏在哪里?
  • 什么是栈?什么是堆?
  • 为什么 SELECT * FROM table WHERE field = null 不能匹配空字段?
  • 延迟加载(lazy loading)是如何实现的?什么场景下有用?他有什么缺陷
  • 如何找出应用中开销最大的查询?
  • 什么是N+1问题?
  • NoSQL是如何解决可伸缩性挑战的?
  • 什么情况下你会使用类似于MongoDB的文档数据库而不是关系型数据库
  • 分布式版本控制系统,相比集中式版本控制系统有哪些优势和劣势?
  • 能描述下什么是GitHubFlow和GitFlow工作流吗?
  • 什么是rebase?
  • 为什么我们需要并发呢?解释一下
  • 为什么测试多线程/并发代码这么困难?
  • 什么是竞争条件(Race Condition)?用任何语言写一个例子?
  • 什么是死锁?用代码解释一下?
  • 什么是饿死?
  • 什么是Wait-Free算法?
  • 怎么测试一个分布式系统
  • 什么场景下你会在两个系统中采用异步通信机制?
  • 远程调用的通用缺点是什么?
  • Web应用中如何管理容错性?在桌面端呢?
  • 让我们来谈谈网络分裂(network partitions)后的几种恢复手段吧?
  • 你在什么时候会使用Request/Response模式,什么时候会使用Publish/Subscribe模式?
  • 只用LIFO栈如何构造一个FIFO队列?只用FIFO队列如何构造一个LIFO栈?
  • 写一段有栈溢出的代码
  • 写一个生成随机迷宫的程序
  • 写一段有内存泄漏的示例代码
  • 写一个简单的垃圾回收系统
  • 写一个基础的Web服务器,然后画一张线路图,展示你将来还想要实现的功能
  • 如何对一个10GB的文件进行排序?如果是10TB的数据,你会采用什么方法?
  • 请事先rnd()函数
  • 什么情况下缓存是没用的,甚至是危险的?
  • 横向扩展(scale out)vs 纵向扩展(scale up):有什么区别?分别在什么场景下使用?
  • 分布式系统中如何处理“故障切换(failover)”和“用户会话(user session)”?
  • 如果让你来设计一个去中心化的P2P系统,你会如何设计?
  • 为什么CGI的扩展性不好?
  • 在可扩展性上,发布/订阅(Publish/Subscribe)模式有什么缺点?
  • 除了恶意攻击造成的拒绝服务现象以外,哪些设计或者架构上的问题会导致拒绝服务?
  • 一个系统要有什么特征才能适配云计算环境?
  • 什么是双因素认证(Two Factor Authentication)? 在一个已有的Web应用中,你如何实现这种机制?
  • 这段JavaScript函数的输出是什么?
  • 你能指出哪儿有内存泄漏吗?
  • 如何重构这段代码?

Written with StackEdit.