百度基础架构组-实习生面试,2016.08 java后台开发

一、项目

1、Spring MVC与Struts2的区别:

2、MVC三层是如何工作的?比如:要访问一个Url?a=xx&b=xx,怎么找到相应的资源,怎么运算,怎么返回等?

3、数据库mybatis,如何优化的?加索引。

二、计算机网络

1、Http协议中GET与POST的区别

a) GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连。POST把提交的数据则放置在是HTTP包的包体中。

b) GET传递的数据长度有限制,POST方式在理论上是没有大小限制的,可以传输大量数据。

c) POST的安全性要比GET的安全性高。因为GET方式传输的数据以明文的形式出现在URL中。

2、Http协议的状态

(200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 )

a) 2xx(成功),表示成功处理了请求。

b) 3xx(重定向),表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。

d) 4xx(请求错误),这些状态代码表示请求可能出错,妨碍了服务器的处理。

401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。403 (禁止) 服务器拒绝请求。404 (未找到) 服务器找不到请求的网页。

e) 5xx(服务器错误),这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误。

500 (服务器内部错误) 服务器遇到错误,无法完成请求。 501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。503 (服务不可用) 服务器目前无法使用。

三、Git与SVN的区别,Git pull、fetch、rebase、reset的区别

1) Git是分布式的,SVN不是。即每个开发人员从中心版本库上\服务器上check out代码后会在自己的机器上克隆一个自己的版本库。

这样,如果你被困在一个不能连接网络的地方,仍然可以提交文件,查找历史版本记录,创建分支。

2) Git分支和SVN的分支不同。Git是基于差异来管理分支的,其分支的代价极小,切换分支也极为方便和快捷。

3) git pull 相当于是从远程获取最新版本并merge到本地;git fetch 相当于是从远程获取最新版本到本地,不会自动merge;实际上使用git fetch更安全一些。

因为在merge前,我们可以查看更新情况,然后再决定是否合并。

4) git rebase?

5) git reset?

四、数据结构

HashMap内部是怎么实现的?拉链式结构

TreeMap 红黑树

五、算法

1、如何判断一个单链表中是否存在环(两个指针,一快一慢)

2、求Fibonacci数列的最快算法,最少时间复杂度是多少?

a) 迭代算法,O(N),需要借助O(N)的空间,最简单。

b) 递归,O(2^N),空间复杂度O(1),时间复杂度太高。

c) 矩阵乘法,最快,时间复杂度O(logN),但是计算比较复杂,不深入讨论。

3、求1-9999这9999个数字中含有多少个1? 分类,排列组合

4、都知道哪些排序算法(具体怎么实现)?手写堆排序算法,冒泡排序算法。

5、数组大小为N,元素取值范围为[1,N],统计每个元素出现的次数。

要求时间复杂度为O(N), 空间复杂度为O(1),可以改变数组元素。

六、Java基础

1、GC垃圾回收机制原理

2、== 与 equals区别

3、final关键字

4、short s1=1;s1 = s1+1;

七、操作系统

linux常用命令

八、前端

正则表达式、js、css块、html、bootstrap

九、IPC(中间件)

例如:spring mvc等,是将HTTP协议......

十、数据挖掘

聚类算法:如何优化?