zoukankan      html  css  js  c++  java
  • 阿里电话面的几个问题回溯

    两个电话,问了不少,一些简单的问题未列出来。

    1. 简述HashMap的原理
    我的答案:主要描述了原理和对查询效率的影响。
    原理分析:HashMap可以理解为简单的内存DB吧?

    2. Oracle查询时,模糊查询是否会使用到索引
    我的答案:%xx%一定用不到,xx%和%xx应该可以用到。
    总结答案:xx%可以用到,%xx和%xx%用不到。
    原理分析:索引底层使用B-TREE,此tree采用散列值映射的方式,因为是树状结构,查询效率为log(n)。当然查询必须从根节点向下搜索,故而xx%可使用到索引的前半部分,而%xx则无法使用索引。

    3. where子句中,!=是否用到索引
    我的答案:用到
    总结答案:未用到
    原理分析:感觉这是个陷阱。理论上确实用到了——过滤非的时候。但之后真正的查询逻辑却要扫描n-1次。从业务查询的角度看,未使用到。

    4. 查询表时,where后条件的顺序是否影响查询效率?
    我的答案:对于单表,语法分析器会自动优化,不会影响。
    总结答案:建议将过滤给力的部分放在最后;语法分析器或优化,效率无差别。
    原理分析:oracle查询分析器执行时,where子句自右向左执行,所以将大过滤放在最右边。

    5. 开放题
    假如双11淘宝搞了秒杀活动,指定时间会有大量用户涌入。
    目前有两个表:
    user_base:id, name, password.....
    user_grade:level, last_login_time, bill_count
    有何策略,在用户大量涌入时减少db压力?
    我的答案:
    1. ui层面。因用户的真正需求是秒杀,可将用户等级信息在页面默认隐藏,用户需要时才点击显示。
    2. 逻辑层面:cache
    3. DB层面:通过大数据预判某些用户行为,将可能登录的用户特殊处理。
    原理分析:尚不明。

    1. 多线程情况下,如果B线程在A线程执行后执行。
    我的答案:wait,notify
    总结答案:最简单的方法:两个线程共享一个资源,例如byte sig=1。线程1在sig=1时执行,执行完后置sig=2。线程2在sig=2时执行。
    还有其它方法,大概多用到java5中concurrent包。
    原理分析:此题简单,秀逗了未答好。

    2. 有什么方法,能保证事务一致性?
    我的答案:DB层面,实现JTA接口,使用spring的事务管理。
    总结答案:待续。

    3. linux定时任务,怎么操作
    我的答案:at命令,具体执行时间与spring中quartz相似。但我使用的定时任务多是app层面的,不熟。
    总结答案:cron命令,具体执行时间与quartz相似。
    原理分析:at可定时执行,但功能稍弱。cron确实没怎么用过,短板。

    4. 将10W条数据写入到分布式DB中,如何保证写入均匀,无重写,漏写?

    我的答案:无思路。

  • 相关阅读:
    codevs 1450 xth 的旅行
    Loj #6287 诗歌
    Codeforces 323C Two permutations
    Spoj MKTHNUM
    [TJOI2015]弦论
    Spoj SUBLEX
    bzoj 4338: BJOI2015 糖果
    bzoj 3462: DZY Loves Math II
    bzoj 2843: 极地旅行社
    清北学堂模拟赛d4t5 b
  • 原文地址:https://www.cnblogs.com/xzs603/p/3533237.html
Copyright © 2011-2022 走看看