高级软件工程师
下面的面试题不分语言,适用于所有编程语言,更多偏向设计。
设计一个分类功能
该功用于行政区域划分,商品分类,等等 例如中国->广东-深圳 .....
要求:
- 无限极分类,层次深度不限
- 快速检索,不能使用递归
- 只能使用一个数据库表实现
- 可以生成树形目录
商品以及属性功能的设计
一个商品有很多属性,例如尺寸,颜色这些属性有固定的值,而另一些属性如重量,体积是需要填写具体数值的,并且还有对应的单位。
要求:
- 商品分类(上一个问题中已经实现)
- 商品属性,有多个属性,且数目不确定,所以需要设计成可以无限添加
- 商品属性即可下拉选择,也可以填写具体数值
问题:
- 商品搜索怎么解决,包含商品名称,属性,属性值,描述的搜索
- 商品的库存怎么设计
- 分类搜索,怎样列出所有子分类以及子分类下的所有分类(无限深度)
用户注册的功能需求
场景模拟: 用户开户注册时常常填写了一部分资料,就离开了,有几种情况
- 用户放弃注册
- 网络连接失败
- 提交出错
- 其他链接吸引了用户点击
等等原因......
需求:
- 要求记录用户填写资料,再次回来(数日/数月后)点击注册的时候,用户不用重新填写所有资料,只需完成未完成的部分即可。
- 重要资料例如手机,电邮,即时通讯号码等等需要记录到数据库,已被公司回访客户。
- 在用户成功注册后应该删除之前保留在数据库中的手机,电邮,即时通讯等等。
请问如何实现?资料怎样保存?
事务处理相关
简述什么是事务处理?
在不能使用数据库的事务处理以及锁(表锁/行级锁)时,怎么保持数据一致性?怎么解决数据库并发操作?
- 怎样解决避免多个用户读读取同一条数据记录?
- 怎样避免多个用户更新同一条数据
模拟题一
例如有一个电商网站每个小时有100个用户下单,公司需要有10个客服处理用户的订单。
问题:
- 当10位员工进入admin后台,查看订单会出现什么问题?
- 怎样防止一个订单被一个以上的人看到?
- 如果两个员工同事看到同一个个订单,怎样避免员工,重复审批同一张订单?
- 如果订单X最先被员工A点开,这是员工A去忙其他事情,X定点就会一直挂起,怎样将订单重新分配?
开发框架
- 简述 MVC 原理以及实现
- 怎样实现 URL 路由
- 怎样实现类,方法访问权限控制
请问下面代码怎么实现?
用你最熟悉的语言实现。
{% highlight java %}
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)
{% endhighlight %}
进程与多线程
- 什么是阻塞,什么是非阻塞?
- 什么是同步,什么是异步?
- 什么情况下使用线程锁?
- 进程与线程的区别?
- 进程间通信有那几种,线程通信有那几种,以及各自的优势?
消息队列
消息有哪些瓶颈?
序列化
- 什么是序列化
- 常用序列化方式都有哪些
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 需要注意什么
插件的实现原理
- 插件有几部分组成
- 如何实现插件安装,卸载,启用,禁用?
- 安装,卸载,启用,禁用怎样实现不停机,不关闭服务的情况进行?
口述如何设计一个MVC框架
- 怎样实现 URL 路由
- 怎样实现控制器
- 怎样实现视图
- 怎样实现模型
口述如何设计一个SOA框架
- 框架分为几个部分?
- 采用什么协议与框架通信?
- 如果考虑到性能使用二进制协议你怎样实现?
- 如何解决并发冲突?
- 如何支持事务?
- 你怎样与消息队列集成或者通信?
口述设计一个分布式计划任务系统
背景:计划任务即周期或定时运行的程序,我们要解决单点故障问题与负载均衡的问题,在一个分布式系统中单节点是不允许的。
设计要求:能够实现高可用,负载均衡,横向扩展
- 怎样处理同时运行产生的冲突问题?
- 怎样排队运行?
- 任务如何持久化?
- 一个节点宕机,另一个节点怎么接管没有完成的任务?
- 如何横向扩展?
- 扩展,收缩,维护如果能做到不停机,不影响业务?