阿里面试总结

2019-04-14 16:30发布

一面: 1、数据库方面的问题:聚集索引和b+索引的区别??聚集索引不是b+索引。哈希索引什么时候使用?【刚刚查了下资料,然后自己在mysql里面showindex了一下,发现聚集索引是用btree索引的。可能当时没了解面试官的意思,,,,哈希索引在选择性高的时候是用。比如说有一个场景,都是根据id来查询的,那么非常适合是用hashindex 2、数据库索引设计原则,优化。为什么要精心设计索引。索引是有最前匹配的。建立在abc这三个字段上的索引,为什么查询bc字段的时候不能用?这跟索引的树形结构有什么关系?这个表示真心不懂。【经过面试官的指点,貌似知道了一些。网上找不到资料,目前没什么时间去翻manual。大概应该是这样的,在建立比如说abc三个字段上的索引的时候,是先根据A来形成一个B+树结构的,然后在相应的叶子节点上(因为数据都在叶子节点上),建立这个节点的A的值对应的行的B的索引(如果有的话),C字段一次类推。这样就建立好了索引。在查询的时候,能查询A、AB、ABC这三个联合的索引。但不能是B或者BC】 3、设计一个数据库连接池。注意考虑数据库响应超时的情况要处理(如果数据库迟迟没有相应的处理策略)。【我在现场写代码的时候是用system.currenttime做的计时,如果好过这个事件,则抛出一个异常】 4、假如说让你设计淘宝网,你怎么架构?数据服务器集群、cache集群、静态文件服务器、日志服务器、webserver集群。如果数据库挂掉了,怎么保证数据不丢失?数据恢复。模板引擎。数据恢复这个表示不懂。 5、大数局的题目 10亿浏览log,5亿产品,让求出今天没有被浏览的商品的id。这个应该就是简单的用bit来做了。 6、Memcached。分布式的时候程序猿手动实现数据分散到各个cache服务器上。 7、kmp算法字符串匹配。 8、Java垃圾回收机制算法。 9、Java效率上的一些问题。比如说你写过的一段考虑效率的代码(在works发的题目的第二个就是考虑效率的题目)。 10、java的prifiling,用过类似的东西没?【TPTP可以用来简单的看一下程序的执行占用cpu、栈的情况】 二面: 1、蚂蚁爬树。 2、AB两个药瓶,两种药片物理和化学形状完全一样,肉眼无法区分。每天只吃一个A药片和一个B药片,而且每天必吃一个A和一个B。药片很贵,不能浪费。问题:如果有一次倒出来了2个A和一个B,为了保证我还是能正常的吃一个A和一个B,请问怎么办?【再找一个B,跟原来的 两个A和一个B一起,碾碎泡水喝。。每次喝一半】 3、678912345,怎么快速找到某一个数字是不是在这个序列里面。说的方法面试官觉得不行。 4、其他项目上的问题。