架构师考题

出题者:netkiller面试

出处:http://www.netkiller.cn/ajax

下面的面试题不分语言,适用于全部编程语言,更多偏向设计。数据库

设计一个分类功能

该功用于行政区域划分,商品分类,等等 例如中国->广东-深圳 .....编程

要求:windows

  • 无限极分类,层次深度不限浏览器

  • 快速检索,不能使用递归缓存

  • 只能使用一个数据库表实现安全

  • 能够生成树形目录服务器

商品以及属性功能的设计

一个商品有不少属性,例如尺寸,颜色这些属性有固定的值,而另外一些属性如重量,体积是须要填写具体数值的,而且还有对应的单位。网络

要求:

  • 商品分类(上一个问题中已经实现)

  • 商品属性,有多个属性,且数目不肯定,因此须要设计成能够无限添加

  • 商品属性便可下拉选择,也能够填写具体数值

问题:

  • 商品搜索怎么解决,包含商品名称,属性,属性值,描述的搜索

  • 商品的库存怎么设计

  • 分类搜索,怎样列出全部子分类以及子分类下的全部分类(无限深度)

用户注册的功能需求

场景模拟:
用户开户注册时经常填写了一部分资料,就离开了,有几种状况

  • 用户放弃注册

  • 网络链接失败

  • 提交出错

  • 其余连接吸引了用户点击

  • 等等缘由......

需求:

  • 要求记录用户填写资料,再次回来(很多天/数月后)点击注册的时候,用户不用从新填写全部资料,只需完成未完成的部分便可。

  • 重要资料例如手机,电邮,即时通信号码等等须要记录到数据库,已被公司回访客户。

  • 在用户成功注册后应该删除以前保留在数据库中的手机,电邮,即时通信等等。

请问如何实现?资料怎样保存?

事务处理相关

简述什么是事务处理?

在不能使用数据库的事务处理以及锁(表锁/行级锁)时,怎么保持数据一致性?怎么解决数据库并发操做?

  • 怎样解决避免多个用户读读取同一条数据记录?

  • 怎样避免多个用户更新同一条数据

模拟题一

例若有一个电商网站每一个小时有100个用户下单,公司须要有10个客服处理用户的订单。

问题:

  • 当10位员工进入admin后台,查看订单会出现什么问题?

  • 怎样防止一个订单被一个以上的人看到?

  • 若是两个员工同事看到同一个个订单,怎样避免员工,重复审批同一张订单?

  • 若是订单X最早被员工A点开,这是员工A去忙其余事情,X定点就会一直挂起,怎样将订单从新分配?

开发框架

  • 简述 MVC 原理以及实现

  • 怎样实现 URL 路由

  • 怎样实现类,方法访问权限控制

ORM

用你最熟悉的语言来实现DB、Field类。

DB db = new DB();
db.select(new Field("name","age"...)).from("user").where(new And("xxx=xx", "xxx=xxx")).limit(10).offset(10).orderby("id",DESC);

进程与多线程

  • 什么是阻塞,什么是非阻塞?

  • 什么是同步,什么是异步?

  • 什么状况下使用线程锁?

  • 进程与线程的区别?

  • 进程间通讯有那几种,线程通讯有那几种,以及各自的优点?

消息队列

消息有哪些瓶颈?

序列化

  • 什么是序列化

  • 经常使用序列化方式都有哪些

CDN应用

  • CDN 缓存的原理?

  • CDN 均可能缓存那些内容?

  • 网站首页90%的内容是静态的,可是用户登陆状态,消息状态是动态的怎么解决?

  • JSON 可能缓存吗?

  • 浏览器缓存与CDN缓存的关系,怎样实现用户浏览器与CDN同时缓存?

面向对象试题

编写一个求和程序

s = new Sum();
s.add(10).add(5).add(6)

s.add(10).add(5).add(6)......add(3) 能够无限的写下去

obj = new Object()
obj.a()
obj.b()
obj.c()
...
...
obj.z()

obj.a().b().c() ... z()

这是 一个简单的 OOP 面试题,在作多年的面试经验中,发现不少人不知道怎样实现上面的问题

Restfull 试题

Restfull 是基于HTTP协议的RPC系统,对于公共服务不存在安全上面的考虑,调用方法也可能是ajax,因此公共系统是开放的。

若是是私有服务,就须要考虑安全问题了,试题以下:

CQRS 问题

  • 什么是 CQRS

  • 能够在那些地方处理 CQRS

请为 Restful 增长 HTTP Auth

  • 怎样为 Restful 增长 HTTP 认证

  • 增长 http 认证有哪些方式

  • 用户与密码安全吗?

使用 SSL 加密 Restful

  • 购买的证书与本身生成的证书有什么区别

  • SSL 怎样配置,在哪里配置

  • 访问 SSL 的 Restful 须要注意什么

数据库应用

数据库分割问题

  • 什么是水平分割,什么是垂直分割

  • 分表,分库有须要主要那些事项

  • 分表,分库后怎么解决夸库查询

  • 分表,分库后怎么建立索引

数据库复制问题

  • 数据库复制有哪几种?

  • 简述主从复制,主主复制,环形复制

  • 当选择主从复制是软件开发上有哪些注意事项

  • 主主如何应用

软件弹性设计

编译语言的弹性设计问题

背景模拟:
有一个电商平台已经开发完毕,编译打包,上线,运营。 因为市场瞬息万变,原有的打折系统设计已经不能知足如今的需求,若是不修改可会会给公司带来经济随时。 如今须要从新修改程序逻辑,但问题来了。目前正在作推广促销活动,系统访问量大不能中断现有服务,哪怕30都会给公司带来不可挽回的损失。

个人问题:

  • 怎样在这个系统的设计之初解决后面遇到的问题

  • 如何设计一个弹性打折系统

  • 在不重启的状况下怎样改编编译语言的内部运行逻辑

问题延伸:
这个问题能够延伸到苹果IOS,例如发布app到苹果appstore至少须要半个月,半个月可能存在不少变数,极可能应用被审批经过,程序已经不在适合当前的状况了。

高可用设计

  • 什么是高可用

  • 什么是双机热备,双机热备有那些缺陷

  • 什么是双活

  • 请简述实现软件高可用要考虑那些因素

软件设计中的灾备问题

  • 数据库怎样实现灾备

  • 缓存怎样实现灾备

  • 应用服务器怎样实现灾备

  • Web 服务器怎样实现灾备

  • 计划任务、定时周期运行的程序怎样灾备

  • 消息队列怎样实现灾备

  • 双活的软件怎样实现同一时刻只能一个运行,或者交替运行

软件部署问题

  • 怎样实现软件自动化部署,实现自动化部署的关键几点是什么?

  • 怎样处理配置文件

  • 怎样排除没必要要或者不但愿部署的文件

  • 怎样实现增量部署

  • 怎样实现差别部署

  • 怎样部署大文件,例如视频等。问题:有一个文件有500M,内容随时有修改,也会不按期追加,怎样实现差别部署,而不是再次发布一个500M的文件。

  • 怎样部署编译软件

  • 怎样备份

  • 怎样部署windows程序

  • 怎样快速回撤,切换时间点或者指定的版本。
    以上不容许使用GIT/SVN实现自动部署。要求自动化不是在30秒内完成。

软件开发框架

插件的实现原理

  • 插件有几部分组成

  • 如何实现插件安装,卸载,启用,禁用?

  • 安装,卸载,启用,禁用怎样实现不停机,不关闭服务的状况进行?

口述如何设计一个MVC框架

  • 怎样实现 URL 路由

  • 怎样实现控制器

  • 怎样实现视图

  • 怎样实现模型

口述如何设计一个SOA框架

  • 框架分为几个部分?

  • 采用什么协议与框架通讯?

  • 若是考虑到性能使用二进制协议你怎样实现?

  • 如何解决并发冲突?

  • 如何支持事务?

  • 你怎样与消息队列集成或者通讯?

口述设计一个分布式计划任务系统

背景:
计划任务即周期或定时运行的程序,咱们要解决单点故障问题与负载均衡的问题,在一个分布式系统中单节点是不容许的。

设计要求:
可以实现高可用,负载均衡,横向扩展

  • 怎样处理同时运行产生的冲突问题?

  • 怎样排队运行?

  • 任务如何持久化?

  • 一个节点宕机,另外一个节点怎么接管没有完成的任务?

  • 如何横向扩展?

  • 扩展,收缩,维护若是能作到不停机,不影响业务?

相关文章
相关标签/搜索