创博龙智高级软件人员测试题.docVIP

  • 0
  • 0
  • 约3.71千字
  • 约 4页
  • 2020-04-13 发布于湖北
  • 举报
系统 某系统需要建立人与人之间的关系网络, 关系根据其紧密程度分为3种类型(1-普通关系,2-好友关系,3-密友关系),简单存储表结构如下: create table people ( id int(11) not null, name varchar(100) not null, locked int(3) not null default 0, primary key (id) ); create table people_relation ( from_id int(11) not null, to_id int(11) not null, relation int(3) not null, primary key (from_id, to_id) ); 说明: 1、表中数据只存储单向关系,如张三和李四是好朋友,则from_id为张三,to_id为李四,relation为2-好友关系,不存储from_id为李四,to_id为张三的反向记录。 2、某人的直接关系是指将其做为from_id找到的to_id和将其作为to_id找到的from_id。 3、间接关系只限一级,如张三和李四是好朋友,李四和王五是密友,赵六和李四是普通朋友,则王五和赵六属于张三的间接关系,若王五和钱七是好朋友,则钱七不属于张三的间接关系,因为其已经超出了间接关系的级数限制。 4、两人之间的关系权重按如下公式计算:直接关系W=R,间接关系W= W* W,其中R表示a和b的关系紧密程度,上标d表示直接关系,i表示间接关系。如:张三有好友李四,则张三和李四的直接关系权重为2(2-好友关系),李四有密友王五,则张三和王五的间接关系权重为2 * 3 = 6。 5、直接关系网的广度按照如下公式计算:E= ( W)或E= ( R* C),R表示关系m的紧密程度(如前述取值1-普通关系, 2-好友关系, 3-密友关系),k表示a的直接关系网里的指定序号的某个人员,C表示与a存在关系m的人的数量。如:张三有1个密友,3个好友,李四有2个密友,2个好友,则张三的关系网广度为 3 + 2 +2 +2 = 9 或1 * 3 + 3 * 2 = 9,李四的关系网广度为3 + 3 + 2 + 2 = 10或2 * 3 + 2 * 2 = 10,那么李四的关系网广度排序高于张三。 6、假定系统已经在com.belong.exam.dao包下提供如下接口和实现来进行数据库访问。 public interface IDAOT { /** * Execute sql using given parameters and return list of entity */ ListT find(String sql, Object[] paras); } public class DefaultDAOT implements IDAOT { @Override public ListT find(String sql, Object[] paras) { // TODO ... return new ArrayListT(0); } } public class DAOFactory { private static DAOFactory instance = new DAOFactory(); /** * Return the singleton instance of DAOFactory */ public static DAOFactory getInstance() { return instance; } private DAOFactory() { } /** * Return DAO instance for given template class */ public T IDAOT getDAO(T clz) { // … } } 测试题目: 1、请设计接口和相关类并编写出主要代码实现下述功能a或b, 假定数据库访问已经可以通过DAOFactory获取的IDAO实例进行实现,其可直接返回entity对象集合,每个entity的数据会根据与jdbc结果集字段名相对应的规则自动进行填充,代码里只需传入sql和参数即可。 a 找出某人的直接关系中关系网最广的前十人(按照直接关系网广度排序) b 找出和某人有间接关系的前十人(按照间接关系权重排序) 2、假设人员具有锁定与正常两种状

文档评论(0)

1亿VIP精品文档

相关文档