百度一面经历(2019秋季校招Android)

         前几天一直以为自己的笔试挂了,然后在某天晚上偶然间都得百度一面的电话通知。想想我笔试答题,我都开始怀疑是不是接到诈骗电话。

         废话不多说,基于博主现在还是一个二本学院的本科生,学JAVA才一年,Android不到半年。所以各位编程大牛就不要喷我了。因为接到一次大公司的面试对我来说很宝贵我就写下来作为纪(jiao)念(xun)。有的地方我没有答上来,但是为了博客的视觉效果我还是把相应答案贴上来。

面试环节

我面试的地方在酒店,大家都是拿着房间号去自己面试的房间。我一进去面试官就站了起来,并邀请我一同坐下。(突然让我感觉人家员工很有修养呀!)

大概是为了缓解紧张的气氛吧,我首先进行了一段自我介绍,然后他问我学校不在省会是怎么过来的巴拉巴拉…问了我简历上的项目。我说我以前是做web后端的,今年才开始学java。简历上也都是自己做的项目(因为学校都会交学生做toy项目,拿这个写在简历上应该会让人家觉得你很low吧!)

聊了大概4分钟左右,面试官就开始问面试题了(可能有些简单的题我忘了)

1.你熟悉数据结构吗?你把你所学的所有数据结构说一下。

答:线性表、顺序表、[栈、队列]、树、二叉树(平衡二叉树、查找二叉树、红黑树、哈夫曼树)、图(拓扑图)。

可能是说的不太好,因为忘了说排序和检索了,因为我一直把这两点归结为算法。面试官眉头皱了皱。

2.栈和队列的区别?

答:先进先出、先进后出

3.树的遍历学过吧,那我给你画一个树,你把树的前序遍历、中序遍历、后续遍历写出来。

答:然后我巴拉巴拉写出来了(根左右,左根右,左右根)

4.那你来写一个前序的递归算法吧?

答:(老生常谈,但是我觉得命名规范比较好)

private void preorder(BinaryNode root){
    if(root == null)
        return;
    System.out.print(root.x);
    preorder(root.left);
    preorder(root.right);
}

5.你说一下排序吧,你知道的排序算法有哪些?

答:插入排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、桶排序.

6.你说一下选择排序的稳定性吧?

答:它是不稳定排序!(其实我当时说成稳定了,哎少壮不努力呀!)

7.说一下快速排序的时间复杂度?

答:nlog2(n)【秒答】

百度一面经历(2019秋季校招Android)_第1张图片

8.学过计算机网络吧,那说一下网络分层?

答:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

9.TCP与UDP的区别是什么?

答:  TCP(传输控制协议):1.可靠协议 2.流量控制 3.拥塞控制

数据要分为多个数据包传输,对数据包分段、编号、流量控制、避免拥塞。客户端和服务器端需要建立tcp连接、通信结束要释放连接。

UDP(用户数据报协议):

数据一个数据包全部发送、传输是否成功需要应用层判断,不需要建立连接。

10.TCP三次握手过程?

答:   第一次:客户端发送请求  

服务器确认对方发送正常

第二次:客户端发送确认信息(自己发送、接收正常,服务器发送、接收正常)

服务器确认(自己接收正常,客户端发送正常)

第三次:客户端发送确认信息(自己发送、接收正常,服务器发送、接收正常)

  服务器确认(自己接收正常,客户端发送正常)

11.哪断开连接怎么做。

答:四次挥手

12.为什么要三次握手四次挥手。

答:握手    

1.服务器猜测客户端要连接自己,但也可能是误发。发送确认

2.客户端知道了服务器支持tcp并告诉服务器自己是真的要连接

3.服务器知道了客户端支持tcp,且是真的要和自己连接

         挥手    

主要是因为告知对方自己已经发送完了数据,但对面还可以继续传输(好比两人打电话)

客户端“我说完了”,服务器“知道了”(服务器这时候可以继续说话,所以不能挂电话)

服务器“我说完了”,客户端“知道了”(两边都说完了,所以可以挂电话)

13.java1.8的新特性你知道吗?

答:Lambda表达式、接口的默认方法与静态方法、方法引用、重复注解、Optional、Date/Time API、JavaScript引擎Nashorn、Base64。

14.你知道js与java之间是如何通信吗?

答:不知道(估计是要引出JavaScript引擎Nashorn。但是我是真的不知道!

15.那你知道设计模式吗?

答:mvc,呸!23种设计模式呀!恩,我说一下:(其实没有说这么全)

           创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

           结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

           行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

16.你是怎么看单例模式的?

答:就跟初始火车票一样,我不能因为多线程而出售多张火车票

17.你写一个线程安全的单例模式?

答:我巴拉巴拉写了个饿汉模式(简单好写)写完后我补充到懒汉模式也可以实现,可以通过…..(让他知道我会就行)

18.那你知道线程之间通信吗?

答:handle、runOnUIThread、view.post、AsyncTask

19.Android进程之间的通信呢?

答:intent、文件共享、messager、aidl、contentprovide、socket、广播

20.你知道三种垃圾回收机制吗?

答:标记清除、复制收集、引用计数

21.haspMap的底层实现?

HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存Entry对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。

这里关键点在于指出,HashMap是在bucket中储存键对象和值对象,作为Map.Entry。这一点有助于理解获取对象的逻辑。

22.activity的四种启动方式?

standard:标准启动模式,每次启动都会新建activity放在栈顶

singleTop:又称栈顶复用模式,如果activity在栈顶了,再次创建直接复用。 如果不在栈顶,则会重新创建。

singleTask:检测全栈是否有实例,如果有,则将之上的activity全部销毁。复用其activity。

singleInstace:创建一个activity任务栈,有全局唯一性,如果有就复用!

23.hashset类如何避免重复?

存入判断。hash值不同,新元素,存!

hash值相同,equles相等,已存在,不存!

hash值相同,equles不相等,元素不存在,存!

24.双亲委派机制?

25.post请求与get请求的区别?

1.提交数据:get数据在url之后,post放在body中

2.提交数据大小:get有限,post无限

3.取变量值:Request.QueryString,Request.from

4.安全问题

26.堆和栈的区别?

栈内存,存储的都是局部变量,凡是定义在方法中的都是局部变量,for循环内部定义的也是局部变量。所以方法先进栈,然后再定义变量,变量有自己的作用域,一旦离开作用域,变量就会被释放。栈内存的更新速度很快,因为局部变量的生命周期都很短。

堆内存,存储的是数组和对象(其实数组就是对象),凡是new建立的都是在堆中。堆里的实体虽然不会被释放,但是会被当成垃圾,Java有垃圾回收机制不定时的收取。

27.handler的内部实现?如何实现延时发送?

通过handler 四大组件来实现(Message、looper、handler、messageQueue)

从handler中获取一个消息对象,把数据封装到消息对象中,通过handler的send…方法把消息push到MessageQueue队列中。 
Looper对象会轮询MessageQueue队列,把消息对象取出。 
通过dispatchMessage分发给Handler,再回调用Handler实现的handleMessage方法处理消息。

28.接口与抽象类你怎么理解?

1、一个类可以实现多个接口,但是却只能继承最多一个抽象类;

2、抽象类可以包含具体的方法,接口的所有方法都是抽象的;

3、抽象类可以声明和使用字段;接口则不能,但接口可以创静态的final常量;

4、接口的方法都是public的,抽象类的方法可以使public,private,protecte或者是默认的packag;

5、抽象类可以定义构造函数,但是接口不行。

29.动态代理机制你会吗?

30.你最近读过什么书?

31.你有没有博客?

32.你在开发过程中遇到了那些bug,你是如何解决的?

33.说一个你最牛的地方?

34.volatile关键字你了解多少?

可见性,他可以保证本地不会存在变量副本,每次读取都会在内存中读取。

禁止jvm重排序 

赋值操作会有一个内存屏障

35.问我你最想问的问题?

36.我觉得你挺好的,不必纠结于在哪个公司!嘤嘤嘤!

你可能感兴趣的:(面试经验)