阿里电面整理

2019-04-14 12:38发布

1. Java的基础知识     String 拼接 的替代操作?  StringBuffer 和 StringBuilder(线程不安全,但速度比StringBuffer快)     Java的多线程的两种实现方式      Java中key,value 这样的数据结构有那些? HashMap,HashTable     Set 和 List 的区别?     vector 是啥? 这一部分主要是考察的基础知识,可惜我的基础还不够扎实,还得努力,要经常地翻翻api,要尝试寻找新的方法实现原来的固定做法。 2. JDBC      statement,prepareStatement 的区别      数据库事务隔离级别? 四种哦! 3. 数据结构      二叉树 4. 开源的一些框架     主要是ssh     struts,struts2的主要区别?(在说这个问题上,我好像没有说很多,我自己的毛病就在这,不是很主动)     谈谈你对spring 的 ioc 看法! 5. 设计模式     他只问了我一个单例模式 6. linux系统的相关操作     linux下的常用操作,命令要熟记。 7. webservice     我回答的不是很理想,我做过但是没完整的说出来。。。 8. 谈谈你自己做过的一些项目。     在这里主要他想知道你有没有从事过分布式的项目,有没有接触过处理高并发的数据库的经验,可惜我么有!      T_T,可惜我答得不是很理想,虽然都不是很深奥,机会总是垂青那些随时做好准备的人,这次我又没做好。。。。 1,如果有row_number() 分析函数,如果我有一张学生表student,里面有班级、学生名、分数,排名我想得到如下数据,该如何用row_number() 排序写一条sql获取,不能用union all来连接获取。
--班级、学生名、分数,排名
  一班 李一 100 1
  一班 李二 100 1
  一班 李三 100 1
  一班 李四 100 4
  一班 李五 99 5
  一班 李六 98 6
.......-- 一班很多学生,依次排下去。
  二班 王一 100 1
  二班 王二 100 1
  二班 王三 99 3
  二班 王四 98 4
  二班 王五 80 5
...... 二班有很多学生,依次排下去。

我的答案是:select banji,name,score,row_number() over(order by banji, name,score desc)。结果他说不对,最近在做sqlserver开发,可能长时间没有碰oracle了,所以导致当时一下没有想出来,被严重BS了,事后仔细一想,其实很简单的,我以前还写过类似的sql,只是时间长了,忘记了,呵呵,不知道大家知道怎么写了么?

2,有关优化的事情,A表500万数据,B表2亿条数据。A与B的数据结构相同,select count(*) from A,B where A.id=B.id。问下,这条sql很耗时,如何优化这条sql,使之效率最高。

我答案,看执行计划,是否走索引,不走的话,就重建所以,他说,如果索引都是完好无损的,而且2亿条数据走索引时优化不过来的,问我还有别的方式来优化这条sql不?我一时就答不出来了,因为sql很简单了,不知道如何优化了,而且我们的oracle库也没有类似的查询,所以一下想不出来怎么回答,结果又被BS了。

3,数据仓库里面,如果你根据客户的需求写完了sql,取到了数据,你如何保证这些数据时准确的呢?

我回答,1,根据需求写一些测试sql来验证,比如数据总量,主要字段,主要信息,抽取几条验证。
  2,找客户,跳一些数据来验证。
结果他反问我这些方法是我自己想出来的吗?我说是的,我感觉我的回答不太对,有点不妙。

还有一些我回答正确的问题,比如管理方面的,我就答的不错,我就不列出来了。反正今天在引以为强项的sql编写与优化上面被问到了,证明我的oracle开发基本功还是很差的,以后要加强这方面的练习了。