阿里一面问题求指教

一面的几个问题,想求大佬们指教一下
1.自己设计一个IOC,怎么设计(我回答的Spring IOC的原理,初始化容器依赖注入的过程啥的)
2.大数据量的查询怎么优化(我回答的索引,sql语句优化)
3.B和B+树区别
4.高并发环境下设计一个消息队列,怎么设计(我说的用redis的list,blpop,不过不对诶)
5.多线程用过么(没有,了解基础)说一下锁吧(说了Synchronized和Reentrantlock的各自底层和区别)
6.NIO(说了Buffer,Selector,Channel,Selector说一半面试官小哥哥说时间到了)
7.你有什么想问的

主要想听听各位大佬对于1 2 4,有什么好的答案么,渣渣学习一下
全部评论
大佬面了多长时间
点赞 回复
分享
发布于 2018-08-14 21:58
1. 不懂java 2. 大数据量的查询可以上缓存吧,用redis或者自己写一个缓存系统,在读远大于写的情况下还是不错的吧。还可以结合布隆过滤器,查询redis之前过滤掉不存在的key。这里注意一下key的过期时间设定成随机值防止缓存雪崩。 4. 消息队列的设计,高并发情况下用redis是不是性能跟不上,毕竟要走网络IO,打到一台机器上估计也受不了。这块我也不懂XD大概是问你自己写消息队列怎么玩?是不是根据订阅的key hash到不同的主机上,然后每个主机维护一个无锁hashmap,下面挂个无锁链表存订阅者地址,然后这样去分发?算了我也不懂,不***了 感觉阿里java相关的问题都好难……
点赞 回复
分享
发布于 2018-08-14 22:05
小红书
校招火热招聘中
官网直投
1.用sax解析xml,根据得到的数据去反射获取构造器和setter方法进行注入,然后利用一个hashmap进行保存。直接说源码感觉有点虚。 2.加缓存,sql与索引优化,数据库表调优符合3范式,热门数据合理利用冗余,(参数调大mysql缓存和利用更好的硬件比如ssd和磁盘阵列,这个不说了。。)分库分表,还扛不住就用nosql。 4.有点不懂,不敢乱说。。
点赞 回复
分享
发布于 2018-08-14 23:01
可以先说文档解析xml文件,反射动态创建对象,,然后并发包map保存name和Object,然后对每个对象属性进行属性注入。第一题这样答不知道行不行
点赞 回复
分享
发布于 2018-08-14 23:06
1 不会java 2 分库分表,缓存(查多用mam***),页面静态化,负载均衡,主从数据库,查的多数据库可以用myisam引擎,第四问也是一种方法吧(可能想让你回答这个) 4.我感觉你说的是对的 个人见解,小白勿喷
点赞 回复
分享
发布于 2018-08-14 23:37

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务