iteye_17915
2009-12-07 09:23
浏览 243
已采纳

Cisco面试归来,有两个问题不解

1、两个长整数求平均值;(不能使用BigInteger,因为效率太差)

2、怎么保证数据库中一个字段值的唯一性;(如注册用户名必须唯一,不能使用数据库唯一性约束,也是考虑到高并发大数据量下的效率)

面试从头到尾感觉Cisco做事总是把性能和24x7放在第一位的, 涉及到了Http协议、反向代理、Cache等等N多能优化性能的东东。。。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 宁静-夏天 2009-12-07 09:23
    已采纳
    1. long longInt1;
      long lingInt2;
      long av =(longInt1>>1)+(lingInt2>>1)+ (longInt1&0x01)&(longInt2&0x01);

    2. 在内存中构建abc树结构来对应唯一字段的检索,读写互斥

      考虑到并发问题,abc树根据字段首字符,或者更进一步(下一个字符)进行散列

      为每个abc配备一个写字段数据的缓存(也是abc树),等缓存到一定数据量,对主abc树进行添加更新,并将自己清空,等待新的写入。

      查询时首先定位 主abc树,然后对主abc树和缓存abc树同时进行检索

      缓存abc树读和写非常频繁,但因为树比较小,速度会比较快,主abc树大部分只有读操作,写操作非常少(只有批量更新的时候),即使写也非常快,缓存abc树已经构建好结构了,只是为主abc树添加节点了

    感觉第二题有点把数据库压力分布到其他地方去做,如果有多个client操作数据这个表,则要考虑把这个功能作一个server,让所有需要数据库的地方都能访问到,使用检索的算法和散列的模式,应该还有很多优化的地方

    两个题,由于水平问题较弱回答的比较粗浅,希望大家指正。

    打赏 评论

相关推荐 更多相似问题