zz百度也有Java哦

zzhttp://yueyemaitian.iteye.com/blog/1387904

深感人家是大牛啊。。。尽量给点答案吧。。。

第一面

项目:

1、找一个项目,介绍下情况。其中遇到了什么问题,每种问题怎么样的解决方案。

算法题:

2、一个排好序的数组,找出两数之和为m的所有组合

由于数组是拍好序的,总体来说比较好处理,i=0,j=n-1,if a[i]+a[j]<sum then i++ else if a[i]+a[j]>sum then j--

这样子可以嘛?

3、自然数序列,找出任意连续之和等于n的所有子序列

同样是双指针,但是两个指针都放在前面...idea还是很简单的


数据结构:

4、从数据库查出一个数据结果集,其中有一个时间字段,请用一个数据结构存储使得可以最快速的查出某个时间段内的记录。

红黑树好了,对于大部分的查找问题,如果不考虑内存的话,红黑树都是个很不错的选择。

5、上一题我提到了B+树,他就继续问了为何用B+树实现索引而不用二叉树

很明显中招了。。。

数据库:

6、说说Oracle数据库的事务隔离级别,以及遇到的相关问题(这个我说了标准的四种级别,Oracle实现的三种级别,并说了概述了下多版本读一致性)

事务隔离级别:

即使是最低的级别,也不会出现 第一类 丢失 更新问题 .  

1. 脏读(事务没提交,提前读取):脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 

2. 不可重复读(两次读的不一致) :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。例如,一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题。 
3. 幻读 : 是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。例如,一个编辑人员更改作者提交的文档,但当生产部门将其更改内容合并到该文档的主复本时,发现作者已将未编辑的新材料添加到该文档中。如果在编辑人员和生产部门完成对原始文档的处理之前,任何人都不能将新材料添加到文档中,则可以避免该问题。 
4.第一类更新丢失(回滚丢失): 
  当2个事务更新相同的数据源,如果第一个事务被提交,而另外一个事务却被撤销,那么会连同第一个事务所做的跟新也被撤销。也就是说第一个事务做的跟新丢失了。 
5.第二类更新丢失(覆盖丢失): 
  第二类更新丢失实在实际应用中经常遇到的并发问题,他和不可重复读本质上是同一类并发问题,通常他被看做不可重复读的特例:当2个或这个多个事务查询同样的记录然后各自基于最初的查询结果更新该行时,会造成第二类丢失更新。因为每个事务都不知道不知道其他事务的存在,最后一个事务对记录做的修改将覆盖其他事务对该记录做的已提交的跟新... 
补充 : 基于元数据的 Spring 声明性事务 : 

Isolation 属性一共支持五种事务设置,具体介绍如下: 

l          DEFAULT 使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别 . 

l          READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 ) 

l          READ_COMMITTED  会出现不可重复读、幻读问题(锁定正在读取的行) 

l          REPEATABLE_READ 会出幻读(锁定所读取的所有行) 

l          SERIALIZABLE 保证所有的情况不会发生(锁表) 

项目相关技术:

7、看到简历上写了个rpc,讲讲,我说了跟rmi比较像,说了异同点,然后又展开到内存分配的问题,不过没搞懂他到底要说什么。还问题java客户端跟c程序服务端的通信情况,比如说c那边直接一个结构体过来,怎么处理,答曰没遇到过。


JVM的事情和Java分布式系统的问题

8、简历上写的jvm性能调优,说说都做了什么事情

9、说到jvm的时候,说到了我们用windows开发,就问linux的脚本知道么,awk用过么

10、简历上写web框架开发维护,就问浏览器端跟服务器端如何通信,不过最后只落到了java对象如何传递到客户端,客户端数据如何传递到服务端。

java基础:

11、并发同步的问题,synchorized是如何使用,Object的wait、notify方法什么作用

框架:

12、是否了解spring,ioc的实现,aop的实现方案,各种方案有什么限制

 

第二面

项目:

1、介绍下你做的项目,稍微高层次一些的介绍下,意思是不要没完没了的介绍

其中提到了主实例集群节点与主实例备用节点的单例状态如何保持同步

2、rpc通信和rmi区别

远程对象方法调用并不是新概念,远程过程调用 (RPC) 已经使用很多年了。远程过程调用被设计为在应用程序间通信的平台中立的方式,它不理会操作系统之间以及语言之间的差异。即 RPC 支持多种语言,而 RMI 只支持 Java 写的应用程序。 [1]

另外 RMI 调用远程对象方法,允许方法返回 Java 对象以及基本数据类型。而 RPC 不支持对象的概念,传送到 RPC 服务的消息由外部数据表示 (External Data Representation, XDR) 语言表示,这种语言抽象了字节序类和数据类型结构之间的差异。只有由 XDR 定义的数据类型才能被传递, RPC 不允许传递对象。可以说 RMI 是面向对象方式的 Java RPC 。


3、并发访问同一条数据的时候,如何保证数据同步。

4、网站性能优化都做了什么,具体的?ETag、Last-Modified、Expires、Cache-Control

5、最近看什么书,印象最深刻的是什么?

这怎么那么像HR面的内容...

Mining of Massive Dataset

当我跑步时我在想些什么(真是...本...)

算法:

6、二叉树,找两个节点的最底层的公共父节点,给思路

这个经常用,但是算法...

确定两者的深度d1,d2,较深的那个先往上走d2-d1步...

7、单向链表反转,写代码

 

第三面(就记了这么多)

自我介绍:

1、个人基本情况,顺便提到项目,就开始扯了几下

数据库:

2、数据库性能优化有做么?做了些什么?

设计:

3、设计一个小商店进销存系统的的表结构设计,老板每天要知道卖出的货物,要定期查看货物的成本、销售额和利润。(这里要注意,终点之一是如何进行成本计算,要知道成本计算的几种方法,选其中一种实现,这个会影响表结构的设计)

算法:

4、1到1亿的自然数,求所有数的拆分后的数字之和,如286 拆分成2、8、6,如1到11拆分后的数字之和 => 1 + ... + 9 + 1 + 0 + 1 + 1。

  1. 思路:递推方法求解:
  2.  * 1.0-9的和为 a1=(0+9)*10/2
  3.  * 2.0-99时:分析共有100个数,十位上有10对0-9,个位上也是10对0-9(个位数上填0补充),
  4.  * 此时a2=2*10*(0+9)*10/2;
  5.  * 3.0-999时:共有1000个数,百位上有100对0-9,十位上有100对0-9,个位上也是100对0-9,
  6.  * 此时a3=3*100*(0+9)*10/2;
  7.  * 依次类推:当位数为n时,有an=n*(10的n-1次方)*(0+9)*10/2;
  8. 上述题目答案即为(0-99999999)时:a8=8*(10的7次方)*(0+9)*10/2,然后加1就可以了。



zz(http://blog.csdn.net/Ashelyhss/article/details/7540248)我只负责解答啦

1.如果有个字符串mary存在其字母转换位置后的另一个单词存在,例如army,就说其存在兄弟单词,设计数据结构与算法,在单词词典中找到某单词的所有兄弟单词。

素数

2.C/C++动态分配内存的方式,区别是什么?

运算符和库函数的区别

3.进程与线程的区别与联系,什么是“线程安全”。

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 

thread=轻量级进程, 不独立占有内存区域,共享代码段,只保留程序运行的必要信息

线程安全分绝对线程安全和相对线程安全

多个进程访问一个互斥资源的时候,程序员任何时候,任何访问都不需要考虑额外的同步措施等待和同步(发送和接收...同一个...)的事情。

4.网络爬虫算法,链表的建立规则,比较两个链表是否相同,处理有无循环的情况。(网页有几百亿,不能用hash)

网络爬虫,假定每个网页至多有一个页面,爬虫抓取的结果是一个单向链表x1.html -> x2.html -> ... -> NULL。现在给定两个页面A和B,经过抓取后得到两个链表,如何判定爬虫抓取到了相同的URL。(网页有几百亿,不能用hash)。设计算法,写出实现的关键代码,不用写爬虫的代码。

是不是单链表啊哥。。。

看起来没有那么难


5.两个有序的子串a1[0~mid-1]和a1[mid~num-1]怎样合成有序的数组,设计一个merge算法,使用O(1)的空间使得数组a[0,n-1]变为有序数组,数组元素支持'<'运算

不就是merge排序的过程么?双指针就好了。。。本来就是O(1)啊

6.系统设计题,suggestion算法,考虑百度搜索栏,输入“北京”,会出现提示下拉列表

请问如何实现这个功能,说明用到的数据结构和算法。用什么方法优化能够使得时间和空间效率尽可能好。

Trie树+TopK 热词


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值