您的位置:首页 > 职场人生

面试资料--百度、阿里、腾讯面试经验

2015-03-19 11:11 633 查看

写在前面的话

面试官都是根据我们的简历来提问,所以我的面试经验只能供大家参考,我简历上所写的技能有java、linux、mongodb等非关系数据库。所以,如果大家简历上没有与我相同的技能,那么与之相关的问题大家就可以忽略了。同时,不止一个面试官跟我提到,关系数据库是必备知识,而不是看自己项目需不需要,所以面试开发岗位,数据库这块几乎都会问及。



#########################################
2015百度实习生交流群(北京):148285051

1.Integer与int的比较



点击这里

2.java的字符串常量池



点击这里
String s1="a";
    	String s2="b";
    	String s=s1+s2;
    	System.out.println(s=="ab");//false
final String s1="a";
    	final String s2="b";
    	String s=s1+s2;
    	System.out.println(s=="ab");//true



3.java的堆、栈、静态区、代码区详解

点击这里
查看这里

4.单例模式的七种写法

点击这里

5.简单工厂模式、工厂模式、抽象工厂模式的区别

点击这里

6.short

short s=1;
s=s+1; //报错:int 无法转换为short
//正确写法是:s=(short)(s+1);
//但是s+=1;不会报错


7.HashTable与HashMap的区别,以及实现的原理;HashSet与HashMap的区别

点击这里

HashMap的工作原理

HashSet与HashMap的区别

TreeMap介绍

集合汇总



8.视图与表的区别

点击这里

9.代码面试最常用的十大算法

点击这里

10.坐在马桶上看算法

点击这里
注意排序算法的思想、递归的终止条件、时间和空间复杂度。

11.B树及其特性

点击这里

12.String StringBuilder StringBuffer的区别

查看这里

13.排序算法

查看这里
也可以参考这里,尤其是博客最后部分

14.非技术层面

自我介绍、项目经验(问的比较细,自己实现要好好回忆一下)、你为什么选择我们公司,你觉得自己是个怎样的人、有什么缺点、未来的职业规划是什么、你对互联网行业996(朝九晚九,一周工作六天)是什么看法。

15.Java 多线程之wait()、notify()和sleep()详解

查看这里

16.Java中Volatile与Synchronized的区别

查看这里

17.tcp/udp区别

查看这里

18.java线程面试题top50

查看这里

/****************************************************************************************
******************************************腾讯面试*************************************
****************************************************************************************/

腾讯二面我被刷了,下面是一面和二面我被问及的问题。
二面面试官很强势,搞的我很紧张。

19.Socket的几种状态

查看这里

20.实现*char strncopy(*dest, *source, int n)的具体过程

1)如果n大于source的长度怎么办
2)如果字符串很长怎么办,考虑I性能问题
我当时写的很一般,我猜想问题2)可以仿照jdk1.5之前的String.substring()方法的实现。
白纸上写代码,现在很多公司都会要求白纸上写代码,比如写个单例模式、快速排序啥的。

21.linux下的proc目录主要有哪些内容?

考察linux主要目录:查看这里

22.iptables有几张表几个链?

查看这里

23.查找file1文件里以ABCD开头的字符串并输出其行号到temp文件,请写出命令

cat file1|grep -n 'ABCD*'>>temp
这题考察命令管道,通配符,数据流重定向。

24.什么是结构化数据,半结构化数据,非结构化数据?

表就是结构化的,xml,json等就是半结构化的,图像、视频等是非结构化的。百度一下,获取更详细的解释。

25.给你五个一模一样的硬币,如何摆放使任何一个硬币与另外四个相连

智力题,当场我没做出来,下来百度了下,找到了一个答案:



我猜测二面是项目经理级别的人物面试,面试官很严肃,问的问题层次很高,问题都不好回答。有几个大问题我都不知道啥意思,所以也就记不起来了,无法提供给大家了。
比如你说你了解MongoDB数据库,那么二面面试官可能不会让你写几个mongo命令,而是让你说说MongoDB的架构(参考这里)。所以,准备复试的时候要上升一个层次来复习你要熟悉的技能。

26.redis的内存架构存储结构

查看这里

27.深度优先、广度优先

查看这里

28.程序员面试、算法等大汇总

查看这里

/******************************************************************************************************
******************************************百度面试(一、二、三面)***********************************
******************************************************************************************************/
百度三面都是技术面,尤其三面,问得特别细,可能是我项目不丰富,所以着重问基础。
以下全是百度面试时,我被问及的问题。

29.MVC模式,为什么有MVC这个设计模式


M:Model,是应用程序中用于处理应用程序数据逻辑的部分

V:View,是应用程序中处理数据显示的部分

C:Controller,是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

优点:

耦合性低:视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。

重用性高:MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型。

易维护:分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。

30.spring、Struts、Hibernate、Swing等框架


问题很大,我要去学习了,这几个我都不会。

31. 表连接的分类和区别


表连接分为:内连接、外连接和交叉连接。

实例查看这里

概念解释查看这里

32.List,Map,Set区别和使用场景


这部分,我自己细化了,讲了ArrayList、LinkedList构造原理(前者是数组实现的,后者是链表实现的),HashMap、HashSet的和区别(前者存储的是键值对,且不允许Key重复;后者存储的是对象,不允许存储重复值)。

33.反射、多态、泛型


如果知道反射,那肯定是个加分项。其实我面试的时候不清楚反射了,讲不明白,我就模糊的说了一下,表明自己大概知道反射能干嘛,但是同时也表明自己确实不是很熟悉。

泛型和多态均可以减少代码的重复量。当时面试官还要我解释了什么是多态和泛型,我均做出了解释。如果你讲不清楚,那么请举例子吧,是个不错的选择。

34用过和熟悉哪些设计模式


我说我熟悉单例模式,知道工厂模式和装饰者模式,自己没去实现过,但是我知道J***A语言中哪些地方用到了这些模式:(Calendar不是单例模式)Java.IO中用到装饰者模式和适配器模式(参考这里)。自己具体实现过这些模式,但是看到了会知道用到了什么设计模式。

如果自己不是很熟悉设计模式,就不要说自己熟悉,否则他会让你说咋实现的。当时我就说自己熟悉单例模式,其余模式我知道java API中哪些地方用到了设计模式,但是我自己讲不清楚如何实现的,所以不敢对面试官说我熟悉这些模式。

35.看过哪些java书,请列一下


侧面考察我们掌握java的程度,我说有《疯狂java讲义》、《java 7编程高级进阶》、《java 7并发编程实践手册》,另外我还补充说到自己经常网上关注java的知识点,比如CSDN论坛。

说道java7的时候,他问我为什么需要用到java7,项目哪里需要用到java7.我回答说java7中引进了fork/join框架

36.awk shell


AWK是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。

这个我不知道,所以没答上来。

37.分片机制


下次补充

38.linux如何查看命令是否执行成功

执行命令:echo $? 如果输出为0则表示上一条命令成功执行,否则就是执行失败。

39.除了grep还有哪些可以搜索字符


find命令也可以,find和grep有区别。

另外,面试官还问我查看文件内容的命令有哪些,我说有cat.

他说还有吗?我回答说还有more和less命令。面试官为这些无非是想检查我们掌握的程度,所以基础命令要掌握牢固些。

还问了删除文件夹的命令。我回答说:删除空文件夹使用rmdir命令;删除非空文件夹使用rm -r 来删除。

40.事务的特性,为什么要有事务。。。


ACID特性。事务保证了数据的完整性和一致性,ACID的特性保证了这点。

41.JSON和XML的区别

查看这里

42.用过多线程没,为什么要用多线程

我回答说,实现过Runnable、Callable接口来实现多线程,和使用过fork\join框架实现过多线程。
然后我说使用多线程是因为,自己的项目中需要读txt文件入库,但是10g原始数据写入数据库需要24小时,太慢了。使用五个线程来读文件、解析入库需要5小时左右,大大缩短入库时间。另外,分布式查询里面也用到多线程。
他接着问我Runnable、Callable的区别。我回答说:前者没有返回值,不能抛出异常,后者可以。
至于信号量、阻塞队列等高级内容并没有考察我,我想知道Runnable、Callable这两个就差不多了,如果知道那些肯定是个加分项。

43.java中有long和Long,两者的区别

我回答说:long是个基本的数据类型,Long是个对象,他封装了long,并封装了一些操作long的方法。为什么会有Long呢?因为某些地方需要传入对象作为参数而不是基本类型,比如定义集合的时候就需要指定类型,但是他只支持对象类型,所以这时候就要使用Long而不是long。紧接着他就开始问我集合了。所以,一面自己一定要学会引导,面试官都是根据我们的简历和回答来接着提问。自己不熟悉的就不要轻易说出来的。

44.为什么会有索引的存在

这个问题是以为我的项目中写到,所以才问我。
我就以图书的目录为例进行了说明,没有目录的话,最坏的情况下要查找整本书才能找到我们想看的内容;但是有了目录我们就能很快缩小查找范围。那么,目录就是索引。索引就是为了加快查询的过程。面试官接着问,那么索引对插入、更新和删除操作有什么影响。我回答说:因为索引的存在,插入、更新和删除的同时也要对索引进行修改,所以索引降低了这些操作的效率。

45.synchronized(this)与synchronized(ClassName.class)的区别

查看这里
#使用this,锁定的是整个实例,而并非仅仅那个方法块,因此当执行到同步方法时会锁住整个实例对象。





46.New一个对象背后发生了什么事情

比如父类和子类实例化,带有static实例化顺序如何?类加载的时机。
这块我不清楚,需要再查查资料。

47.Object类有哪些方法

Object是所有类的父类,包含的方法有toString(),Clone(),wait(),notify(),notifyAll(),hashCode(),equals(),finalize(),

48.while循环里有个try-finally语句,其中try里面有个break或者continue语句,当执行break或continue之后,还会执行finally吗?

答案:会的,finally一定会执行,即使在try执行return语句,也会执行finally.

49.异常分类,什么叫不可捕获,异常的根类是啥?异常的继承结构是怎样的?

查看这里
或者查看这里

50.除了new以外,java中还有哪些产生对象的方式?

还有反序列化,反射,调用对象的clone()方法。

51.有一箱苹果,具体数量未知。如果3个打包,则余2个;如果5个打包则余3个;如果7个打包,则余2个。先如果输入参数N,请输出N个符合这样情况的苹果个数,请在白纸上写下代码。

这钟问题都是要找出规律的,写个笨方法完全降低你在面试官眼里的水平。所以,遇到这种问题就最好写出一个公式出来。

52.new一个对象一定就创建一个新对象吗?

我不清楚,我再查查

53.synchronized可以修饰static方法吗?

可以。

54.给你一个算数表达式,比如:“3+4*5-3*(7-2)”,请告诉我你的伪代码来计算这个表达式

二面和三面基本都有这样的算法题,这个只能说要多积累,多刷题。

/*************************************************************************************************
***********************************阿里巴巴面试************************************************
*************************************************************************************************/

C语言中static特性
hashmap构造原理
数组与链表的区别
快速排序思想和递归终止条件、时间和空间复杂度
软件工程中常用开发模型
B树有什么特点

总结下自己优缺点

拿到阿里高德实习offer。

-----------------------------------------------------以上面试都是2015年春季实习招聘面试经历,下面是2015年秋季校招面试经历-------------------------------------------------------------
1.排序算法记得那几个,挑出一个讲讲它的思想和复杂度?

2.同样的排序算法,比如快速排序,对数组排序和链表排序时间复杂度有什么变化?

3.类之间的关系有哪几种?

4.现有一个场景,根据描述的场景抽象出类以及类与类之间的关系。
商贩需要进货,有两个进货点:水果市场和干货市场,水果市场水果有香蕉、苹果等。他们保质期不一样。干货市场有饼干、薯片等,他们单位不一样(袋装,桶装等)。
消费者向商贩购买货物,产生订单。商贩晚上会根据售卖情况列出清单,即货存清单,商贩根据货存清单决定第二天的进货。商贩的目标是,零库存。

请根据以上场景,抽象出类,并说明他们之间的关系,尽可能的抽象。

5.讲讲nosql的存储结构以及查询过程,关系数据库与nosql区别啥的。

6.B树

7.hashtable查找元素的时间复杂度:O(1),了解构造原理就知道时间复杂度。

8.二叉查找树
面试都是不预约的哦。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: