百度,阿里,搜狐公司社招面试题及总结

阿里、百度、搜狐等公司社招面试记录与总结

从别人那里找来的他被问到的问题,在这里做整理总结。

一、面试遇到的问题        

1.百度  

面试官自带电脑,整个面试过程都在记录,首先详细询问了最近一份工作项目的架构和工作内容,

面试主要围绕工作中用到的组件和中间件技术来扩展,考察掌握程度。

MySQL InnoDB存储的文件结构

http://blog.csdn.net/happy_wu/article/details/78736196
索引树是如何维护的?

http://blog.csdn.net/happy_wu/article/details/78736510
数据库自增主键可能的问题

http://blog.csdn.net/poisions/article/details/51538551

Redis的并发竞争问题如何解决

http://blog.csdn.net/happy_wu/article/details/78736641
了解Redis事务的CAS操作吗

https://www.cnblogs.com/martinzhang/p/3415204.html

分析线程池的实现原理和线程的调度过程

http://blog.csdn.net/hsuxu/article/details/8985931


动态代理的几种方式

http://blog.csdn.net/heyutao007/article/details/49738887


Spring AOP与IOC的实现(回答源码即可)


为什么CGlib方式可以对接口实现代理?

  JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢,这就需要CGLib了。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理与CGLib动态代理均是实现Spring AOP的基础。

 JDK动态代理的原理是根据定义好的规则,用传入的接口创建一个新类,这就是为什么采用动态代理时为什么只能用接口引用指向代理,而不能用传入的类引用执行动态类。

   CGLib采用的是用创建一个继承实现类的子类,用asm库动态修改子类的代码来实现的,所以可以用传入的类引用执行代理类

    CGLib创建的动态代理对象性能比JDK创建的动态代理对象的性能高不少,但是CGLib在创建代理对象时所花费的时间却比JDK多得多,所以对于单例的对象,因为无需频繁创建对象,用CGLib合适,反之,使用JDK方式要更为合适一些。同时,由于CGLib由于是采用动态创建子类的方法,对于final方法,无法进行代理




RMI(远程方法调用)与代理模式11111111111     2222222222222


Dubbo的底层实现原理和机制,


描述一个服务从发布到被消费的详细过程

算法方面考察了一个简单的数组就地去重问题,用丢弃数组尾部元素的方式实现了。

百度金融的面试安排在了周六,最近应该在各种扩张,各个招聘网站随处可见招聘启事。

面试官很赞,态度认真,有些问题没有思路会给你提示,交流的不错

面试中的问题:

分布式系统怎么做服务治理11111 22222222

接口的幂等性的概念1111 2222


Maven出现版本冲突如何解决


JVM垃圾回收机制,何时触发MinorGC等操作

堆内存分为 年轻代 老年代 和持久代
年轻代 又分为 eden 区和 survivor 区

这两个区如果满了 触发的就是 minor gc
新生代和老生代的内存回收策略
Eden和Survivor的比例分配等
Synchronized和Lock的区别

类别 synchronized Lock
存在层次 Java的关键字,在jvm层面上 是一个类
锁的释放 1、以获取锁的线程执行完同步代码,释放锁 2、线程执行发生异常,jvm会让线程释放锁 在finally中必须释放锁,不然容易造成线程死锁
锁的获取 假设A线程获得锁,B线程等待。如果A线程阻塞,B线程会一直等待 分情况而定,Lock有多个锁获取的方式,具体下面会说道,大致就是可以尝试获得锁,线程可以不用一直等待
锁状态 无法判断 可以判断
锁类型 可重入 不可中断 非公平 可重入 可判断 可公平(两者皆可)
性能 少量同步 大量同步

两次面试,感觉百度的流程比较严格,面试官挺不错的,简单可信赖,虽然工作中一般都用谷歌,

想起一个段子,哈哈。

有次面百度,我提到了一个比赛,面试官很感兴趣,想搜一下,

于是先用百度搜了一下关键字,首屏没有找到,面试官面不改色,熟练的打开了谷歌输入关键字,发现第一个就是官方网站。


2.阿里巴巴

内推收到了阿里菜鸟和阿里云安全部门的面试,后来参加了阿里云的面试。
阿里的面试安排的很快,几轮面试都是电面。听朋友说阿里五轮面试,四轮技术一轮HR,技术面试是部门的几个同事交叉面试,也有了了解。

一面总体上还是围绕项目架构、Java基础、JVM、并发编程、数据库操作、中间件技术和Dubbo服务治理框架等展开,
可能因为是云安全部门,有一半时间在考察JVM,还提问了一些编译优化的知识,

一面结束后很快安排了二面,相对一面,二面的问题更深入,问题比较刨根问底,更加注重对一些技术细节的理解和把握。

比如数据库操作面试官会详细的问你数据库插入和删除一条数据的过程在底层是如何执行的,项目里配置了读写分离,也会比较深入的就实现方法和底层逻辑展开讨论。11111111111  222222222222

一些值得记录的问题:

JVM内存分代,
Java 8的内存分代改进
深入分析了Classloader,双亲委派机制

JVM的编译优化
对Java内存模型的理解,以及其在并发中的应用
指令重排序,内存栅栏等

Hash冲突的解决问题

HashMap的并发问题

了解LinkedHashMap的应用吗
在工作中遇到过哪些设计模式,是如何应用的

两次面试,阿里给我留下的印象很好,面试官都是大牛,阿里的岗位大都在杭州,面试结束特意关注了一下那边的生活成本,

 如果拿到阿里和网易等几家互联网公司的高薪,买房和生活的确比北京要轻松很多 。

 

3.优酷土豆

优酷的面试都是二对一,每轮面试两个面试官,
一面比较顺利,主要是Java基础,Spring原理,Java NIO,并发和集合框架等,
可能是因为视频网站,优酷考察网络原理的知识多,比如TCP/IP协议、长连接与短连接等。

一面提到了自己可能会在下半年学习大数据与机器学习相关的知识,二面就问了很多海量数据的问题。

TCP/IP协议
长连接与短连接
mapreduce过程
多路归并的时间复杂度
海量url去重类问题
Java NIO使用
倒排索引的原理
对分词技术的了解

面试中给了一个具体场景,考察对MapReduce过程的理解,比如Map阶段和Reduce阶段是如何进行的等,

Reduce阶段面试官希望分析给出一个多路归并的时间复杂度,用外排序的知识简单分析了一下,回答的不太好。

回来以后搜索了胜者树和败者树的优化,发现这里面的内容还挺多,深刻体会到有些知识点如果平时掌握的不够全面深刻,很难信手拈来

 

4.搜狐新闻

搜狐最近应该是没有招聘计划,面试等待时间比较长。
做了笔试题,一面是个和我年纪相仿的面试官,针对笔试和简历提问了一些基础问题,聊得挺投机,
二面技术经理就比较偏架构和中间件的应用,提问了项目,主要考察了服务治理和消息队列等中间件使用的问题,

消息中间件如何解决消息丢失问题
Dubbo的服务请求失败怎么处理
重连机制会不会造成错误
对分布式事务的理解
深入分析几个设计模式

面试最后提问了一个不定长字符串转为定长字符串的问题,
刚刚面过优酷,这个简单的问题被我想复杂了,没有Get到面试官的点,考虑了唯一性,性能等,扯了一大堆。

醒一下大家,面试过程中要保持清醒,不要有思维定式,除非是底层研发岗位,社招对算法的考察不会特别难,用正常的思路去解决就可以

 

5.58赶集

58总部在798附近,全天有班车可以过去。总体上,感觉面试官的问题非常接地气,

三轮技术面,大部分是实际场景的算法和系统设计类问题。

HTTP请求的报文格式
Spring的事务实现原理

实际场景问题,大量用户数据如何在内存中排序和去重
缓存机器增删如何对系统影响最小,一致性哈希的实现
Redis持久化的几种方式
Redis的缓存失效策略
实际场景问题解决,典型的TOP K问题

实际场景问题,海量登录日志如何排序和处理
SQL操作,主要是索引和聚合函数的应用

三面面试官提问了一些优点和缺点的自我评价类问题,简单交流以后对我给出了一些中肯的建议,非常感谢。

 

6.国美在线

国美在线面试最开始是部门经理沟通,后来做了一份笔试题,
题目质量不错,主要考察Java基础,数据库,设计模式以及数据结构,要求写出B-Tree的节点结构,

算法题目是一道等概率抽奖的题目,用蓄水池抽样算法解决了。

SQL语句编写
MySQL的几种优化
Spring行级锁
Spring衍生的相关其他组件整理
RMI的几种协议和实现框架
BTree相关的操作
数据库锁表的相关处理
考察跳台阶问题

和面试官的交流比较轻松,面试官提示我要加强数据库操作的掌握,另外面试过程中询问了一些工作中用到框架和组件的版本等细节问题,平时没太关注,

后来思考了一下,对开源组件的应用,版本的管理很重要,不注意可能会发生一些诡异的问题。

 

7.去哪儿网,口袋购物等公司

除了上面的公司,还参加过去哪儿网,口袋购物,链家等几家公司的面试。

去哪儿网中规中矩,口袋购物的工作环境非常不错。链家网最近有新浪的鸟哥加入任技术总监,在IT圈子里挺火,面试了链家旗下的两个租房部门,技术氛围不错,前景看好,很值得去的一家公司。

几家公司的模式和问题都类似,注重对基础和编程能力的考察,以及对分布式系统设计和架构的理解

值得一提的是一家创业公司的面试,过程十分简单粗暴。
没有自我介绍,面试官看完简历就在白板上提了一个多线程调度问题,递过来MAC就开始敲代码+_+
写完以后我表示这题目意义不大,问了Redis,要求十五分钟实现一个LRUCache,再次现场写代码。
写到一半面试官看没问题就打断了,问对公司有什么想了解的,等了一会让我回去了,就这么被Pass,创业公司效率果然高(此处/dog脸)。

面试中要保持清醒比如被问到十万个ip段查找这个问题,首先是一个典型的查找问题
明确了这个,就可以针对性的选择相关的算法实现,如二分查找、二叉查找树等。

推荐画图表达的方式。

做过的项目架构,各种框架和中间件的设计实现,通过画图的方式都可以很好的阐述,
可以随身带着纸和笔,面试本来就是一次很好的学习过程,一些问题也可以记录下来。

一般来说,面试过程类似一个寻路算法,交流过程中如果提到了面试官感兴趣的某一点,
就会就这个点展开,然后一直提出问题到你不能回答为止,或者你特别牛在这个领域直接秒杀面试官,这样一条路线走通,再换下一条路线。

 

二、程序员如何用正确的姿势提高技术水平   

相比程序员,我更喜欢攻城狮这个名字,

程序员在不了解这个行业的人眼里已经被贴上了各种标签,诸如各种宅,不修边幅,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值