前几天百度工作人员就和我商议电话面试时间,然后定在今天的10:30.于是快到时间时,
我找了个安静的地方等待来电,大概10:35时,电话响起了,说是百度的面试官,他说让我准备
笔和纸,找一个安静的地方,他过5分钟再打来。于是我马上跑到实验室拿了笔和纸,来到
教学楼5楼,很安静。他按时打过来,开始面试。
他首先让我介绍一下我自己,然后依次从我的简历上所写的IT 技能开始问问题,
1、关于Java,==和equals的区别,String和StringBuffer的区别
2、关于操作系统,问了进程和线程的区别,在项目中是如何实现多线程的?
还有都用过哪些操作系统,linux中什么命令来查看端口是否被占用(netstat -anp),
查看ip地址的命令(ifconfig)。
3、关于数据库,当项目中的数据库由SQLite变成SQL Server或Oracle时,如何不改变程序,
使得程序复用率达到最大。
答:(我的回答)用框架Hibernate进行数据持久化操作,因为在hibernate.cfg.xml配置文件中,
配置了连接数据库的信息,
这是只需将驱动改成连接SQL Server或Oracle的驱动即可,不需要修改任何的程序。
Hibernate是将对象直接映射到表的关系,一个表映射成一个类,一行记录映射成一个对象,一列记录映射成对象的属性。
所以修改类,等于直接修改表。每个类都有一个配置文件(类名.hbm.xml),来完成这种映射。
4、关于J2EE,(1)JSP和Servlet的区别
答:(之前答错了,只知道Servlet,不知道JSP,还说JSP是运行在客户端的, 他听我说完之后,
重复了一遍我的答案,还问确定吗?现在才知道大错特错了。)正确答案如下:
JSP本质上就是Servlet,但两者的创建方式不一样,Servlet完全是JAVA程序代码构成擅长于
流程控制和事物处理而通过JSP来生成动态网页;
JSP由HTML代码和JSP标签构成,可以方便地编写动态网页,因此在实际应用中,采用Servlet来控制
业务流程,而采用JSP来生成动态网页;
在Struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
(2)HttpServlet中的一些方法
int(); service(); doGet(); doPost(); destroy() ; getServletConfig(); getServletInfo()
(3)doGet()和doPost()的区别
doGet(),调用用于获取服务器信息,并将其做为响应返回给客户端。当经由Web浏览器或通过HTML、JSP直接访问Servlet的URL时,
一般用GET调用。 GET调用在URL里显示正传送给SERVLET的数据,这在系统的安全方面可能带来一些问题,比如用户登录,
表单里的用户名和密码需要发送到服务器端, 若使用Get调用,就会在浏览器的URL中显示用户名和密码。
doPost(),它用于客户端把数据传送到服务器端,也会有副作用。但好处是可以隐藏传送给服务器的任何数据。Post适合发送大量的数据。
5、关于机器存储,大端和小端问题:
大端模式:数据的高字节保存在内存的低地址中,数据的低字节保存在内存的高地址中。
这样有点类似于把数据当作字符串顺序处理。
小端模式:数据的高字节保存在内存的高地址后中,数据的低字节保存在内存的低地址中,
和我们的逻辑方法一致。
6、关于设计模式,单例模式、工厂模式
单例模式:保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)。
单例模式保证一个类仅有一个实例,同时这个类还必须提供一个访问该类的全局访问点。
单例的构造函数是私有的,外部程序如果想要访问这个单例类的话,
必须通过GetInstance()来请求得到这个单例类
工厂模式:是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式
7、关于网络,TCP和UDP的区别
详细说一下TCP连接时的三次握手,为什么是三次,不是两次?
8、关于C语言,问了如何求得链表的长度,如果是循环链表呢?再如果是循环链表中只知道一个指向节点的指针?再如果没有指针,只知道某一个节点。
最后问了一些项目的事。应该就这么多了。