高级软件工程师 2016-9月更新

高级软件工程师

下面的面试题不分语言,适用于所有编程语言,更多偏向设计。

设计一个分类功能

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

要求:

  1. 无限极分类,层次深度不限
  2. 快速检索,不能使用递归
  3. 只能使用一个数据库表实现
  4. 可以生成树形目录

商品以及属性功能的设计

一个商品有很多属性,例如尺寸,颜色这些属性有固定的值,而另一些属性如重量,体积是需要填写具体数值的,并且还有对应的单位。

要求:

  1. 商品分类(上一个问题中已经实现)
  2. 商品属性,有多个属性,且数目不确定,所以需要设计成可以无限添加
  3. 商品属性即可下拉选择,也可以填写具体数值

问题:

  1. 商品搜索怎么解决,包含商品名称,属性,属性值,描述的搜索
  2. 商品的库存怎么设计
  3. 分类搜索,怎样列出所有子分类以及子分类下的所有分类(无限深度)

用户注册的功能需求

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

  1. 用户放弃注册
  2. 网络连接失败
  3. 提交出错
  4. 其他链接吸引了用户点击

等等原因......

需求:

  1. 要求记录用户填写资料,再次回来(数日/数月后)点击注册的时候,用户不用重新填写所有资料,只需完成未完成的部分即可。
  2. 重要资料例如手机,电邮,即时通讯号码等等需要记录到数据库,已被公司回访客户。
  3. 在用户成功注册后应该删除之前保留在数据库中的手机,电邮,即时通讯等等。

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


事务处理相关

简述什么是事务处理?

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

  1. 怎样解决避免多个用户读读取同一条数据记录?
  2. 怎样避免多个用户更新同一条数据

模拟题一

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

问题:

  1. 当10位员工进入admin后台,查看订单会出现什么问题?
  2. 怎样防止一个订单被一个以上的人看到?
  3. 如果两个员工同事看到同一个个订单,怎样避免员工,重复审批同一张订单?
  4. 如果订单X最先被员工A点开,这是员工A去忙其他事情,X定点就会一直挂起,怎样将订单重新分配?

开发框架

  1. 简述 MVC 原理以及实现
  2. 怎样实现 URL 路由
  3. 怎样实现类,方法访问权限控制

请问下面代码怎么实现?

用你最熟悉的语言实现。

{% 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 %}


进程与多线程

  1. 什么是阻塞,什么是非阻塞?
  2. 什么是同步,什么是异步?
  3. 什么情况下使用线程锁?
  4. 进程与线程的区别?
  5. 进程间通信有那几种,线程通信有那几种,以及各自的优势?

消息队列

消息有哪些瓶颈?


序列化

  1. 什么是序列化
  2. 常用序列化方式都有哪些

CDN应用

  1. CDN 缓存的原理?
  2. CDN 都可能缓存那些内容?
  3. 网站首页90%的内容是静态的,但是用户登录状态,消息状态是动态的怎么解决?
  4. JSON 可能缓存吗?
  5. 浏览器缓存与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 问题

  1. 什么是 CQRS
  2. 可以在那些地方处理 CQRS

请为 Restful 增加 HTTP Auth

  1. 怎样为 Restful 增加 HTTP 认证
  2. 增加 http 认证有哪些方式
  3. 用户与密码安全吗?

使用 SSL 加密 Restful

  1. 购买的证书与自己生成的证书有什么区别
  2. SSL 怎样配置,在哪里配置
  3. 访问 SSL 的 Restful 需要注意什么

插件的实现原理

  1. 插件有几部分组成
  2. 如何实现插件安装,卸载,启用,禁用?
  3. 安装,卸载,启用,禁用怎样实现不停机,不关闭服务的情况进行?

口述如何设计一个MVC框架

  1. 怎样实现 URL 路由
  2. 怎样实现控制器
  3. 怎样实现视图
  4. 怎样实现模型

口述如何设计一个SOA框架

  1. 框架分为几个部分?
  2. 采用什么协议与框架通信?
  3. 如果考虑到性能使用二进制协议你怎样实现?
  4. 如何解决并发冲突?
  5. 如何支持事务?
  6. 你怎样与消息队列集成或者通信?

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

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

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

  1. 怎样处理同时运行产生的冲突问题?
  2. 怎样排队运行?
  3. 任务如何持久化?
  4. 一个节点宕机,另一个节点怎么接管没有完成的任务?
  5. 如何横向扩展?
  6. 扩展,收缩,维护如果能做到不停机,不影响业务?

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2016-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏后端云

云主机的指令集配置

一些高性能计算应用需要CPU支持某些特性,如SSE4.2、 AVX、 AVX2、LZCNT、 FMA、 BMI等。OpenStack 默认的配置项为了保持虚拟机...

873
来自专栏沃趣科技

基于Oracle的私有云架构探析(连载二)@【DTCC干货分享】

• RAC One Node 根据整合的数据库的SLA要求,还需要决定整合数据库所选用的数据库类型,在数据库的类型上,11GR2版本之前,要不是单实例要不是RA...

3737
来自专栏杨建荣的学习笔记

sysbench压测小记(r11笔记第99天)

对于很多线上业务而言,如果有新服务器,新的环境,新的业务,到底资源和预期的承载压力是否匹配,这个得用数据说话,或是通过严谨的论证来阐述。 比如一台新...

3366
来自专栏魏琼东

DotNET企业架构应用实践-系统架构与性能-缓存技术与ORM中的缓存查询技术

系列回顾       在前面的文章DotNET企业架构应用实践-系统架构与性能-理论依据及相关做法一文中我介绍了系统性能优化的理论做了一个概括的介绍,也简单的介...

1837
来自专栏韩伟的专栏

腾讯互娱开源分布式开发框架 Pebble

现代游戏项目中,为了让更多的玩家能在一起玩,游戏服务器所需要承载的在线玩家数量越来越多。同时为了让游戏更好玩,越来越多复杂的业务逻辑都需要放在游戏服务器端上运行...

4180
来自专栏樊华恒的专栏

海量之道系列文章之弱联网优化 (五)

在客户端接入服务器调度策略的演化过程中,我们最早采用了“就近接入”的策略,在距离客户端更近的地方部署服务器或使用CDN,期望通过减少RTT来提高网络交互响应性能...

3580
来自专栏java一日一条

大话程序猿眼里的高并发(上)

高并发是指在同一个时间点,有很多用户同时的访问URL地址,比如:淘宝的双11,双12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击,再...

783
来自专栏smartguys

(七):C++分布式实时应用框架 2.0

版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法律追究的权利!

913
来自专栏云技术

腾讯云存储专家深度解读基于Ceph对象存储的混合云机制

  毫无疑问,乘着云计算发展的东风,Ceph已经是当今最火热的软件定义存储开源项目。如下图所示,它在同一底层平台之上可以对外提供三种存储接口,分别是文件存储、对...

8.8K14
来自专栏技术分享

后端服务性能压测实践

后端服务性能压测实践 标签(空格分隔): 性能 压测 后端服务 压测实践 作者:王清培(Plen wang) 背景 环境检测 压力机及压力工具检测 Linux...

3709

扫码关注云+社区