【工作】面试和工作
2016-06-30 09:04
351 查看
从5月的22号开始,我就开始了面试,自然而然,面试官会问我很多的问题,现在想起来的,大多是我回答的不好,或者直接就没有回答出来的。根据你要干的职位,面试官会很好的问你一些关于他们项目中的问题。同时我也已经工作了好几天了,现在说一说。
[面试]
现在工作的项目主体是一个CS的项目,也有一些BS的部分,同时也有一些是app和支持硬件的服务的部分。根据这个项目的内容,面试官问了我如下的问题:
1、写过控件吗?写过服务吗?
来了后才知道,这个项目的很多控件都是他们自己写的,包括报表、对硬件提供了很多的服务,包括app。
2、存储过程怎么样?写的有多复杂?
这个项目一共有好几百个存储过程,而且功能的逻辑几乎都在存储过程中体现,同时在存储过程中用到了游标、事务等东东,短一点的存储过程还好,但是遇到了二三百行的存储过程,里面的很多关键字我都不认识,需要去查,感觉还是有一点吃力的。
3、你写一个接口,他是向数据库中多表插入3000行的数据,而且这个接口客户访问的时间就差几秒而已,该怎么写?
这个问题,我提到了多线程和事务,但是面试官说,他们是用队列实现的。
4、连表查询,查询的是几千万条的数据,这个接口你该怎么写?从代码实现和数据库设计的角度考虑。
我记得我说了好多,就是围绕sql语句怎么写比较优化,比较性能高,但是面试官说,在他们的项目中,提高查询效率比较快的手段是建立索引。
也许这是我刚刚经历过的面试,记忆比较深刻,我记得,好几次的电话面试,我也有好多的问题答不上来。
1、我们现在的tree加载比较慢,该怎么解决?
我现在记得,我直接说了加异步。具体他们想要什么答案,我不知道,我那时候也不知道该怎么解决。
2、存储过程中写循环该怎么写?
首先,sql server中是没有for循环这样一说的,我记得我当时说的好像就是for循环,在实际的应用中,好多都是用的while和游标来实现循环的。
mysql中是while循环、loop循环和repeat循环。
oracle中,很多时候也是用游标来实现的,根据参数的不同,查询方式也分为俩种。
3、游标了解多少?
4、where和having的区别?
(1)用的地方不一样
where可以用于select、update、delete和insert...into语句中。
having只能用于select语句中
(2).执行的顺序不一样
where的搜索条件是在执行语句进行分组之前应用
having的搜索条件是在分组条件后执行的
即如果where和having一起用时,where会先执行,having后执行
(3).子句有区别
where子句中的条件表达式having都可以跟,而having子句中的有些表达式where不可以跟;having子句可以用集合函数(sum、count、avg、max和min),而where子句不可以。
有些地方两者都可以用,比如
select studentid, avg(score)
from studentScore
group by studentid
having left(studentid, 1)='0'
select studentid, avg(score)
from studentScore
where left(studentid, 1)='0'
group by studentid
这种情况下哪个会快一点?
解析:
select studentid, avg(score) from studentScore groupby studentid having left(studentid, 1)='0'
(1)、分组汇总
(2)、过滤非法项
left(studentid, 1)='0'是个效率不很高的过滤条件,如果分组会使数据量极大减少(比如每个人有几十门课),而且要过滤掉的只是很小一部分学生,这种写法会有比较高的效率
select studentid, avg(score) from studentScore whereleft(studentid, 1)='0' group by studentid
(1)、过滤非法项
(2)、分组汇总
虽然left(studentid,1)='0'是个效率不很高的过滤条件,但是如果你要从几百万学生中找到几十个学生3-5门功课的平均分,还是应该很明智的选择它
面试了这多,好多的问题都不记得了,就先这些吧。
[工作]
刚来这几天,我还是比较随意的,没有任务,每天就是看代码,吃饭,第一天早上6点20起来的,八点到的公司,公司是八点半上班的。剩下的这几天,我都是6点40起来的,然后7点10分出发,8点10分到公司。
公司的同事都很热情,我们这个开发屋是三个安卓,三个java,我一个net。
由于我负责的这个项目已经在上百家医院上线了,所以我要做的就是用户的需求变了,我改动代码。由于用户比较多,所以需求变更也是比较频繁的。
这个系统无论是对网页版系统、app系统、硬件等提交的服务都写到了存储过程和触发器中,而且业务逻辑都在里面,面对好几百行的这些,刚刚开始我还是很有压力的。同时我问了项目组长,为什么不直接拼接sql,却要用这些呢?他说,上百家医院,他们的很多业务其实都不太一样的,于是我们保证程序是一个版本,但是根据不同的用户,我们用不同的存储过程,也就是数据库不是一个版本的。
昨天遇到了一个需求,我和组长说了一下我的思路,组长根据我说的思路,直接说用触发器啊,写三四百行左右就可以解决了。我直接说简单的我还行,就像这样复杂的,我不会写。组长比较好,和我说:需求还不定,你先学习一下,写第一个肯定慢,慢慢就快了。给我吃了一颗定心丸啊。
今天已经是周四了,时间好快啊,一些都是刚刚开始,加油!!!!!
[面试]
现在工作的项目主体是一个CS的项目,也有一些BS的部分,同时也有一些是app和支持硬件的服务的部分。根据这个项目的内容,面试官问了我如下的问题:
1、写过控件吗?写过服务吗?
来了后才知道,这个项目的很多控件都是他们自己写的,包括报表、对硬件提供了很多的服务,包括app。
2、存储过程怎么样?写的有多复杂?
这个项目一共有好几百个存储过程,而且功能的逻辑几乎都在存储过程中体现,同时在存储过程中用到了游标、事务等东东,短一点的存储过程还好,但是遇到了二三百行的存储过程,里面的很多关键字我都不认识,需要去查,感觉还是有一点吃力的。
3、你写一个接口,他是向数据库中多表插入3000行的数据,而且这个接口客户访问的时间就差几秒而已,该怎么写?
这个问题,我提到了多线程和事务,但是面试官说,他们是用队列实现的。
4、连表查询,查询的是几千万条的数据,这个接口你该怎么写?从代码实现和数据库设计的角度考虑。
我记得我说了好多,就是围绕sql语句怎么写比较优化,比较性能高,但是面试官说,在他们的项目中,提高查询效率比较快的手段是建立索引。
也许这是我刚刚经历过的面试,记忆比较深刻,我记得,好几次的电话面试,我也有好多的问题答不上来。
1、我们现在的tree加载比较慢,该怎么解决?
我现在记得,我直接说了加异步。具体他们想要什么答案,我不知道,我那时候也不知道该怎么解决。
2、存储过程中写循环该怎么写?
首先,sql server中是没有for循环这样一说的,我记得我当时说的好像就是for循环,在实际的应用中,好多都是用的while和游标来实现循环的。
mysql中是while循环、loop循环和repeat循环。
oracle中,很多时候也是用游标来实现的,根据参数的不同,查询方式也分为俩种。
3、游标了解多少?
4、where和having的区别?
(1)用的地方不一样
where可以用于select、update、delete和insert...into语句中。
having只能用于select语句中
(2).执行的顺序不一样
where的搜索条件是在执行语句进行分组之前应用
having的搜索条件是在分组条件后执行的
即如果where和having一起用时,where会先执行,having后执行
(3).子句有区别
where子句中的条件表达式having都可以跟,而having子句中的有些表达式where不可以跟;having子句可以用集合函数(sum、count、avg、max和min),而where子句不可以。
有些地方两者都可以用,比如
select studentid, avg(score)
from studentScore
group by studentid
having left(studentid, 1)='0'
select studentid, avg(score)
from studentScore
where left(studentid, 1)='0'
group by studentid
这种情况下哪个会快一点?
解析:
select studentid, avg(score) from studentScore groupby studentid having left(studentid, 1)='0'
(1)、分组汇总
(2)、过滤非法项
left(studentid, 1)='0'是个效率不很高的过滤条件,如果分组会使数据量极大减少(比如每个人有几十门课),而且要过滤掉的只是很小一部分学生,这种写法会有比较高的效率
select studentid, avg(score) from studentScore whereleft(studentid, 1)='0' group by studentid
(1)、过滤非法项
(2)、分组汇总
虽然left(studentid,1)='0'是个效率不很高的过滤条件,但是如果你要从几百万学生中找到几十个学生3-5门功课的平均分,还是应该很明智的选择它
面试了这多,好多的问题都不记得了,就先这些吧。
[工作]
刚来这几天,我还是比较随意的,没有任务,每天就是看代码,吃饭,第一天早上6点20起来的,八点到的公司,公司是八点半上班的。剩下的这几天,我都是6点40起来的,然后7点10分出发,8点10分到公司。
公司的同事都很热情,我们这个开发屋是三个安卓,三个java,我一个net。
由于我负责的这个项目已经在上百家医院上线了,所以我要做的就是用户的需求变了,我改动代码。由于用户比较多,所以需求变更也是比较频繁的。
这个系统无论是对网页版系统、app系统、硬件等提交的服务都写到了存储过程和触发器中,而且业务逻辑都在里面,面对好几百行的这些,刚刚开始我还是很有压力的。同时我问了项目组长,为什么不直接拼接sql,却要用这些呢?他说,上百家医院,他们的很多业务其实都不太一样的,于是我们保证程序是一个版本,但是根据不同的用户,我们用不同的存储过程,也就是数据库不是一个版本的。
昨天遇到了一个需求,我和组长说了一下我的思路,组长根据我说的思路,直接说用触发器啊,写三四百行左右就可以解决了。我直接说简单的我还行,就像这样复杂的,我不会写。组长比较好,和我说:需求还不定,你先学习一下,写第一个肯定慢,慢慢就快了。给我吃了一颗定心丸啊。
今天已经是周四了,时间好快啊,一些都是刚刚开始,加油!!!!!
相关文章推荐
- 程序员必知的六种隔离技术
- android(base)面试题
- 前端面试题汇总
- 一道无关编程的面试题
- 一道有趣的面试题,小鸟和火车的问题
- 嘴上说要认真面试,身体却在偷懒,这样好么?
- 成为Java顶尖程序员 ,看这11本书就够了
- 成为一个优秀程序员的11条小贴士
- 黑马程序员——面向对象
- java 面试题三十三 子类父类方法执行顺序的问题
- 我是进击的码农4
- 野生程序员初长成——记北大程序设计与算法专项课程
- 一道有意思的逻辑分析题
- 剑指offer-3-面试题11:数值的整数次方(对错误的处理)
- 面试题:1,进程和线程的区别?什么时候用进程?什么时候用线程?为什么你的项目中用的是线程?为什么不用进程?如果只有进程,对你这个项目有没有影响?
- 中通服软件公司笔试面试 回忆版
- 面试
- 程序员必须掌握的6种软技能
- 每个程序员应该阅读的10本经典书籍
- 有一种生物叫做程序员。。。。