百度商务搜索部门Java开发工程师电话面试
离毕业还有半年,还未进入找工作高峰期,自己也未进入复习状态,整天处于混日子的状态,前几天一个老师给内推了一下,收到电面通知,结果依然疯玩,最后几乎果着参加了面试。持续了大概一个小时,发现自己各种不会各种不懂,连当初找实习时候的水平都远远达不到。这里大概记录一下,也给自己敲响警钟吧。
1. 自我介绍
2. java基础知识
(1) final,finally,finalize区别 ok
(2)List有哪些,ArrayList和LinkedList的区别 ok
(3)接口和抽象类区别,在接口里可以定义变量么 ok
(4)HashMap的实现原理 ?
(5)线程里sleep和wait的区别
3. 数据库知识
(1)join left与right之间区别
(2)用过事物吗,事物的概念是什么
(3)要加快查询速度需要用什么?索引如何建立
(4)什么情况下用外键?外键如何建立?举例说明
(5)sql语句 学生表:id, name, 课程,分数, 求每科及格的学生人数
课程表:课程id,学生id, 求选课人数大于10人的课程
考察where和group by顺序问题
4. 数据结构和算法
(1)二叉树的存储结构,如何实现深度遍历和广度遍历,用栈如何实现?
(2)前缀、后缀表达式??
(3)给出一个式子如:1- 2 X 4 + 5,如何用程序实现算法运算符的优先级。提示用栈
(4)给出两个数组:字母数组:arr1:A B ....
数字数组:arr2: 1 2 ....
问题:随机输出字母,如何保证字母A的输出概率为33%,字母B的输出概率为66%
(5)给出一个数组,求子数组之和最大的子数组
(6)知道哪些排序算法,实现思路,代码如何写
(7)给出一个5*6的方格盘,求有多少个矩形
5. Linux
(1)常用命令,跑程序的命令
6. 介绍下最有价值的项目,其中用到的有价值的技术或算法
7. 总结:
(1)java基础知识尚可。
(2)数据结构和算法弱爆了,特别是数据结构,学过的东西几乎都交代回去了,所以需要集中复习。
(3)另外数据库方面也有不足,掌握的知识面太过狭窄,且不够深入。
(4)Linux依然没好好学。