Senior software engineer
Mar 2, 2016 面试
高级软件工程师
下面的面试题不分语言,适用于全部编程语言,更多偏向设计。 数据库
设计一个分类功能
该功用于行政区域划分,商品分类,等等 例如中国->广东-深圳 ….. 编程
要求: 浏览器
- 无限极分类,层次深度不限
- 快速检索,不能使用递归
- 只能使用一个数据库表实现
- 能够生成树形目录
商品以及属性功能的设计
一个商品有不少属性,例如尺寸,颜色这些属性有固定的值,而另外一些属性如重量,体积是须要填写具体数值的,而且还有对应的单位。 缓存
要求: 网络
- 商品分类(上一个问题中已经实现)
- 商品属性,有多个属性,且数目不肯定,因此须要设计成能够无限添加
- 商品属性便可下拉选择,也能够填写具体数值
问题: 多线程
- 商品搜索怎么解决,包含商品名称,属性,属性值,描述的搜索
- 商品的库存怎么设计
- 分类搜索,怎样列出全部子分类以及子分类下的全部分类(无限深度)
用户注册的功能需求
场景模拟: 用户开户注册时经常填写了一部分资料,就离开了,有几种状况 并发
- 用户放弃注册
- 网络链接失败
- 提交出错
- 其余连接吸引了用户点击
等等缘由…… 框架
需求: 异步
- 要求记录用户填写资料,再次回来(很多天/数月后)点击注册的时候,用户不用从新填写全部资料,只需完成未完成的部分便可。
- 重要资料例如手机,电邮,即时通信号码等等须要记录到数据库,已被公司回访客户。
- 在用户成功注册后应该删除以前保留在数据库中的手机,电邮,即时通信等等。
请问如何实现?资料怎样保存?
事务处理相关
简述什么是事务处理?
在不能使用数据库的事务处理以及锁(表锁/行级锁)时,怎么保持数据一致性?怎么解决数据库并发操做?
- 怎样解决避免多个用户读读取同一条数据记录?
- 怎样避免多个用户更新同一条数据
开发框架
- 简述 MVC 原理以及实现
- 怎样实现 URL 路由
- 怎样实现类,方法访问权限控制
请问下面代码怎么实现?
用你最熟悉的语言实现。
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同时缓存?
先写到这里,后面会不断更新。。。。。