百度java面试题
面试题能测出应聘者的能力水平。下面是小编为大家带来的百度java面试题,相信对你会有帮助的。
百度java面试题(一)
第一面
1、说说项目
由于我几年一直做一个产品,从后台做到前台,从业务开发做到技术平台,所以就画了整个产品部署架构图,b/s & c/s的,然后一层层的讲解。
B/S现有Web框架改造、浏览器缓存、c/s补丁下载各种方式、cdn、c/s通信协议、rpc集群、http集群、负载均衡、集群前置机调度、后端服务器主从实例、后端服务器各种优化(异步、性能隔离)、数据库服务器各种优化(索引、物化视图、读写分离、帐套结转、数据库横向切分、纵向切分)、层间调用性能监控的实现,对照产品架构图各个部分一路讲下来。
2、http集群方案,我们的是反向代理服务器,自己有写代理服务器,也可以用主流的web服务器,然后面试官就问ngnix、lighttpd、apache三大主流web服务器的区别...囧了。。。
3、如果有机会重新设计你们的产品,你会怎么做?
这个当时回答的不好,主要从通信协议和数据存储两块来说了,这样说有些片面。因为我们产品本身又很多问题,只通过部署架构图是反映不出来的,如二次开发问题、补丁下载问题、不同模块java包相互依赖问题、技术框架比较封闭、构建系统方案落后、文档缺失等,我们内部经历过很多的痛苦的,但是当时思维局限在了部署架构,所以没有说出这些问题。
第二面
4、网站性能优化如何优化的?
自己一点网站性能优化经历,结合《构建高性能Web站点》,扯了一通,跟一面有点类似。
5、本来要花产品架构图,我翻过简历,后边有一面时候画的,就没要画了。然后就要我在黑板(暂且叫做黑板)上画jvm体系结构。
画了jvm体系结构,讲解了jvm各个组件和组件的交互、GC算法、各种垃圾收集器、运行期优化、产品中遇到的与jvm相关的问题如oom、ClassLoader问题等,并针对HotSpot VM的实现讲解了堆、非堆内存划分
第三面(HR面)
6、看我面过b2b和支付宝,问了下情况
b2b面完了,但是没过;支付宝过了2面
7、个人优缺点
8、是否愿意来杭州
第四面(视频电话面,杭州某大牛)
9、介绍项目。对于Web框架的改造,跟原有框架的异同
10、下班后的时间有学习技术么
11、是否参加过开源项目
百度java面试题(二)
第一面
项目:
1、找一个项目,介绍下情况。其中遇到了什么问题,每种问题怎么样的解决方案。
算法题:
2、一个排好序的数组,找出两数之和为m的所有组合
3、自然数序列,找出任意连续之和等于n的所有子序列
数据结构:
4、从数据库查出一个数据结果集,其中有一个时间字段,请用一个数据结构存储使得可以最快速的查出某个时间段内的记录。
5、上一题我提到了B+树,他就继续问了为何用B+树实现索引而不用二叉树
数据库:
6、说说Oracle数据库的事务隔离级别,以及遇到的相关问题
这个我说了标准的四种级别,Oracle实现的三种级别,并概述了下多版本读一致性
项目相关技术:
7、看到简历上写了个rpc,讲讲,我说了跟rmi比较像,说了异同点,然后又展开到内存分配的问题,不过没搞懂他到底要说什么。还问题java客户端跟c程序服务端的通信情况,比如说c那边直接一个结构体过来,怎么处理,答曰没遇到过。
8、简历上写的jvm性能调优,说说都做了什么事情
9、说到jvm的时候,说到了我们用windows开发,就问linux的脚本知道么,awk用过么
10、简历上写web框架开发维护,就问浏览器端跟服务器端如何通信,不过最后只落到了java对象如何传递到客户端,客户端数据如何传递到服务端。
java基础:
11、并发同步的问题,synchorized是如何使用,Object的wait、notify方法什么作用
框架:
12、是否了解spring,ioc的实现,aop的实现方案,各种方案有什么限制
第二面
项目:
1、介绍下你做的项目,稍微高层次一些的介绍下,意思是不要没完没了的介绍
其中提到了主实例集群节点与主实例备用节点的单例状态如何保持同步
2、rpc通信和rmi区别
3、并发访问同一条数据的时候,如何保证数据同步。
4、网站性能优化都做了什么,具体的?ETag、Last-Modified、Expires、Cache-Control
5、最近看什么书,印象最深刻的是什么?
算法:
6、二叉树,找两个节点的最底层的公共父节点,给思路
7、单向链表反转,写代码
第三面
自我介绍:
1、个人基本情况,顺便提到项目,就开始扯了几下
数据库:
2、数据库性能优化有做么?做了些什么?
设计:
3、设计一个小商店进销存系统的的表结构设计,老板每天要知道卖出的货物,要定期查看货物的成本、销售额和利润。
这里要注意,重点之一是如何进行成本计算,要知道成本计算的几种方法,选其中一种实现,这个会影响表结构的设计
算法:
4、1到1亿的自然数,求所有数的拆分后的数字之和,如286 拆分成2、8、6,如1到11拆分后的数字之和 => 1 + ... + 9 + 1 + 0 + 1 + 1。
之前去百度面试,整理了一下面试问题。没有笔试,直接和面试官交谈。感觉面试官人挺好的,挺有耐心,每次面试回来不论公司大小,不管能不能拿到offer,但基本都能有一些有价值的输入,还挺开心的。我虽然有4年工作经验,但是不是走纯技术系的,开发,维护,见客户,项目管理什么都干过,最近想换工作,粪发图强恶补算法,数据结构一类大公司特爱考的基础知识。
这次后几道题答的不好。尤其是有一个关于服务器session优化和数据库表水平拆分策略的,没说到点儿上,回来的路上有了点儿思路,回来百度一下,发现八九不离十。前面几个算法的也都是磕磕碰碰,好歹都说上来了,是不是最优的就不好说了。
以前做信息系统,更注重业务的获取与功能的实现,虽然所有人都喊性能、架构什么的,但是实际上没人在乎。反正撑死了也就那么点儿人用。互联网公司真的是不一样啊,对并发和大数据量的关注是深入骨髓的。感觉真是惭愧。虽然这几年跑客户谈需求讲ppt自诩也是混场面的,但是从心里希望自己在技术上也能再往前走一步。