下午刚刚从阿里霸面回来, 趁着还没忘记,赶紧写个笔记,我面试的岗位是java研发,先总结下阿里面试官问的问题
一坐下来,面试官直接搞了一句,咋们直接写代码吧,我当时就不淡定了,然后把铅笔和草稿纸给了我,请听题
1.他说AB有两种排列方式,AB,BA,ABC有ABC,ACB,BAC......,然后让我写代码
听完他举例,原来他让我写一个全排列,原来是是看过用刘汝佳书上的范例,只不过是用c实现的,但是那个递归,但是我都忘了,所以直接说不会了,现想肯定弄不来,就不浪费时间了
2.写代码,他说现在有个IP地址,127.0.0.1,然后让我实现以6位的方式:000127.000000.000000.000001打印
这题比较容易,我会,主要就是用到String的spilt方法,然后遍历,不足六位填上就完了
3.继续写代码,现在有一个网页的内容,存在String中,让我打印这个网页的所有的内容
其实他说的内容,就是html语言中的'<','>'标记之外的所有内容,我想了一下,就用栈的思想,如果碰到<字符,就压栈,然后没有碰到>字符之前,所有字符都过滤,然后用str拼接上所有的非<>标记外的内容即可,碰到>字符,就出栈,栈又是空,他还继续问除了这种方法外还有什么方法,我说用通配符,正则表达式,他摇头,这个问题就过去了。
4.面试官让我写完这三个程序之后,就问我,你平时都写代码吗?
(由于我第一个题没做出来)就说平时都练习,但是写得少点
以下的问题全凭记忆,顺序啥的就不用考虑了
5.他问我用过哪些操作系统?
我说原来也用过linux系统,linux系统啥问题一问我,我肯定不知道,就直接回答但是没有系统的研究过,他没有继续问了
6.我的简历上说会使用SSH,spring mvc框架,他说你对比下这两种框架
我说spring mvc这种框架更安全,因为它放在WEB-INF文件中,只有服务器内部能够url映射访问到,外面访问不到,其他的我也说不上来
7.他说spring都有哪些应用
我说spring有注入,spring还有web flow,AOP,spring自己的一套增删改查
8.他说spring的AOP如果让你自己来设计,用到哪些设计模式
我说我设计模式的书看得很少,他说这些都是学生应该看的基本书籍,我直接汗颜了
9.我简历上写了操作sql server,MySQL,oracle,他说你对比下这三个数据库
我说oracle的主键自增方式是序列的机制,也可以用触发器,其他两种都是自增长,然后oracle没有数据库的概念,只有表空间的概念,感觉答的太肤浅了 但是深的我又不会,我应该怎么答
10.他还问了我你们项目用什么数据库,为什么用这种数据库,而不用其他两种?
我说我不参与数据库这块,他应该是让我分析性能吧,这东西我没研究过,不敢随便扯,就说这个不知道
11.我用c#做一个简单的教务管理系统,就是软件工程的一个大作业,和同学三个一起完成的,他看了excel录入的功能,问我怎么实现的?
我说这块代码不是我写的(真不是我开发的),但是当时我看了看它的代码,就是Excel的表头固定,然后一行一行读取数据,事务用到了sqltransaction这个类,中途遇到了异常,直接回滚
其实面试官根本不知道我是霸面的,传递简历的人知道,我不应该说的,我说了之后,他说你这是基础有问题,我说是,不该错的都错了,是该检讨下,他说技术不仅要有广度,但是同时也要有深度,我感觉我回答的都太肤浅了,看的书太少了,以后应该多看点书,多敲代码,知行合一
如果大家有更好的回答,或者指点我应该怎么答更好,希望共同交流,望不吝赐教