面试总结 1.自我介绍 尽量不要说太多,因为说的多坑就多。 2.问项目 面试宝典上有项目流程,选一个套一下,然后重点找个需求研究一下,面试官问你的具体做什么的时候就把你准备的需求当个例子说给他听。然后维度指标都记一两个,有的会问。 3.问了一个存储过程跑着跑着感觉跑很慢。(就是问优化) 1.可以这么说 一般来说,SQL优化啊,首先就是逻辑上不能套娃,其次就是不要使用一些性能比较低的,比如说去重用DISTINCT这些(注意:到这边就不要在继续说下去,在这里挖个坑A) 然后,可以尽量走索引,因为有些时候走索引会比较快(答道这边也不要说下去,在这里挖个坑B) 其次就是如果表比较大的话,一般要建分区(答道这边也不要往下面大,这是坑C) 最后就是有时候可以用HINT来改变SQL的执行计划(这方面比较难,但也可以挖个坑D) 面试官一定会在ABCD四个坑中来问 然后他就问了分区跟索引,答案在下面。 A:那项目上怎么去重。 可以用GROUP BY来分组去重,也可以用EXISTS ROW_NUM这些 B.索引有哪些?索引一定比全表快吗? 索引有主键索引,组合索引,位图索引啊。项目上经常用的一般就是主键索引和组合索引(组合索引就是一张表中几个字段经常被查询,就可以同时建) 索引不一定,但大多数情况下会比较快。这涉及到索引的访问方式,因为索引要先找到块,再访问根,这时候有可能就会多访问一些块,走IO读取数据(全表扫描)反而会比较快(往下问就说没怎么研究了) C:建过分区吗(就说在建表的时候可以所带指定,PARTITION ...具体看我发的给你,然后说项目上经常用的就是范围分区,一般分区是按照 日 月  季度 年,具体看需求) D:项目上经常用的是数据加载的方式 比如说NO LOGING  这种方式是针对表的数据比较大的情况 不走缓冲区,直接加载到磁盘里。其他的就比较少用,因为现在ORACLE的CBO(基于代价的执行方式) 会选择最好的执行路线来执行(F5可以查看执行计划,也可以用SQL_TRACE  往下问就说这是DBA的内容了,自己是开发人员比较少用到) 后面就聊了一下期望薪资,还有为什么离职。 还问了有什么不会的,我当时还紧张了一下,然后面试官然后面试官就笑着说现在已经过了技术面了。问这些的原因是公司会根据你的自身业务范围给你量身定制入职后的岗位培训。