面试分4类:
A.纯算法,扔给你3到5道算法题,在规定时间内准确完成,让面试官满意通过;
B.纯应用,给你一个应用场景,问你有什么想法或者解决方案?
C.算法+应用混合型;
D.问一些语言和工具的使用经验,这种问题动手做过,而且认真思考总结后,才知道怎么回答;
E.问基础知识,这种最简单。
国美在线:
1.两个字符串,请写出计算这两个字符串相似度的算法;
2.写出解析某字符串中重复字串的方法;
3.有若干带索引的TB级数据,比如iphone4s,iphone5,ipad,newpad,输入的查询是Phone,pad.
如何构造索引?如何处理查询?
4.如何实现K-V DB?分布式存储和检索系统?比如用berkelayDB如何实现一个类似memcached的系统?
5.如何将相同的商品自动聚合到一起?
6.如何训练同义词?
7.如何进行商品的相关性推荐?
8.hadoop如何shuffle的?
9.谈谈分类、聚类、关联规则、贝叶斯过滤?
10.如何反链接作弊?
11.聊一下CPN?
12.讲讲消息中间件的实现?比如MQ?.
13.页面解析如何做的?有没有设计自动化解析算法?
网页解析比较复杂,因 为现在的网页不是纯html,还包含了一些动态的脚本,页面内容会因加载时机及脚本的运行而发生变化,需要模拟浏览器运行来提取其中的outerlink 和content(href已经指明的非脚本outerlink可直接用正则提取)浏览器会 创建自己的解析器来解析网页,解析有2个过程:分词、构建Dom树。,如果熟悉浏览器内核,对此问题会很有帮助。分词算法属于词法分析,分词算法的输出为html符号序列,分词和构建dom树都可以用有限状态机来描述。翻页抓取可以用开源的渲染引擎Webkit或者MetaSeeker之类的小工具,网页内容的提取可以用Tika,Jsoup,Htmlparser来完成。http://ued.ctrip.com/blog/?p=3295
14.(K,V)存储的数据库如何加快搜索速度?
DHgate网:
1.lucene内部如何排序?
2.搜索引擎的评分机制?
3.如何优化索引?如何优化检索?
4.索引文件多大时会影响检索速度?
5.Java序列化有什么优缺点?与开源的protobuffer thrift作比较。
淘宝网:
1.给我画一下IP首部?
2.讲一下WEB服务器的运行机制?
3.HashMap和Hashtable?
4.什么叫索引?什么叫分布式数据库?
5.系统线程cpu很高,怎么排查?
6.对于多线程开发,比较大的挑战有哪些?如何避免出现数据不一致导致死锁的问题?线程安全性如何保障?
7.平时关注哪些开源项目?
8.线上出现问题怎么排查,减少内存泄露发生要注意哪些问题?如何做冗余?
9.性能测试的考核关注指标主要有哪些?
10.分库分表与读写分离具体如何实现?说明依据。
11.讲讲JVM垃圾回收的原理和算法。
12.如何保证数据库的事务性?通过配置文件可以实现,但是从内部机制如何实现?
13.B+树为什么能加快搜索速度?
人人网:
1.顺时针从外向内打印旋转方阵.(面renren时的题)
2.定义栈的数据结构,要求添加一个min函数,能够得到栈中最小元素。要求函数min,push,pop的时间复杂度为O(1).
3.HTTP是有状态还是无状态?为什么?
4 .使用过Linux内核调试工具吗?
5.Java锁具体是如何实现的?聊聊各种锁的优缺点和适用场景
6.聊一下Paxos算法的实现?
7.Bloom Filter;
8.大整数加法 ;
9.SOAP和Restful有什么区别?
10.谈谈PageRank算法思想?
搜狗:
1.写一个bash脚本,把当前目录及其所有子目录下的.java文件都改名为.class文件。(例如:dir1/dir2/name.java 改名为 dir1/dir2/name.class)
58.对sql优化有什么实际操作经验?是如何优化的?
云壤:
1.统计一个数组中出现次数最多的数字的次数,如果次数相同,取较大的数字出现的次数。
2.A,B两个升序链表,将其合成一个非降序的链表C,且继续使用A,B的空间。
3.求1-n这n个数字,0,1,2,3,4,5,6,7,8,9各自出现的次数。
4.用两个栈模拟一个队列。
5.写出一个二叉树的横向搜索算法。
6.两个数组中的数字求重。
7.如何去掉一个文件里面的c++风格注释?
8.求素数的算法
9.元素为comparable,数量为n的可重复数组,要求时间复杂度O(n),空间复杂度O(1),问数组中有没有某一个元素个数超过n/2个?
10. 两块虚拟网卡进行通讯,但是需要数据加密,如何实现数据加密?
11.进程和线程的区别,进程通信的方式有哪些,线程同步控制的方式有哪些?
12.写一下二分查找。
13.把一个非常大的数转成二进制,求其中1的个数.
京东商城:
1.问项目,主要是电商订单处理的细节、事务控制、锁粒度,银行相关的业务比如支付系统、财务系统;
2.问基础,如JDK的那个版本开始引入NIO的?NIO设计思想、tomcat 中的NIO是怎么用的?解决了什么问题?
3.分库解决什么问题?分表解决什么问题?实现分库分表基于什么标准?一般表多大的时候开始拆分?
蘑菇街:
1.LVS的3中配置方式,你用的那一种?为什么?
2.MongoDB索引用的什么数据结构?
3.HashMap的源码读过吗?
4.一致性hash导致雪崩效应时该如何解决?(虚拟节点表)
5.是否读过集合的JDK源码?然后就是问源码细节。
6.消息中间件怎么设计会比较高效?
7.redis与memcached的比较,传统DB和NoSQL DB的差异性比较。
8.一个存储系统如何最大化利用磁盘的IO速度?现在有上千万的客户端要上传图片,并且客户端应用需要有权限分级,如何设计这个系统?
9.如果做系统调优?举个实际的例子?
10.Mysql binlog如何做复制的?
11.说说对网络爬虫的理解?
12.熟悉Hadoop和HBase吗?
亿玛在线:
1.姚晨有一千万粉丝,她发布了一个消息,如何把这条消息推送到每个粉丝?
2.用多线程递增打印一个数;
3.至少使用两种方法求表达式的值:1 – 2 + 3 – 4 + … + m;
4.用多线程模拟考试交卷。
5.函数的递归调用和栈一样吗?
优购网:
1.主要是做面试题,没怎么问项目;
2.运算符优先级,比如y+=--x/z++,其中x=1,y=2,z=3,设计运算符的优先级高低时的标准是什么?;
求解math.round(11.5) math.round(-11.5) 。
3.已排好序的数组int a[]={0,1,2,3,4,5,6,7,8,9},用冒泡的话比较次数是多少?(有陷阱)
4.广域网中如何防止sql注入攻击?
5.有一个四位数,前两位相同,后两位相同,且该四位数是另外一个两位数的平方,实现高效的算法求该数是多少?
这道题本来是一道小学六年级的算术题,可以把该问题转化成另外一个求完全平方数的问题来解答,还有其它解法。
6.手写html,jsp,servlet,jdbc,js完成一个用户登录模块;
7.写一个sql嵌套语句查询,题目忘了。
友友天宇:
1.单向链表的反转。
2.海量日志数据查询,搜索引擎会将每次用户输入的查询字符串进行记录,假设目前已有1000万条查询字符串记录,每个查询字符串的长度是1-255个字节,去重后不足300万条记录,请你计算出重复度最高的前10个查询字符串,要求使用内存不能超过1G。
3.金额转换,将阿拉伯数字的金额形式“¥1234.56”转换成中文金额的大写形式“壹仟贰佰叁拾肆元伍角陆分”(最大支持”万亿“;10^4为壹万, 10^8为壹亿;注意0,比如:壹仟零贰);
4.Linux 的常见命令及shell编程的考察;
58同城:
1.session和cookie;
2.spring IoC 和AOP;
3.缓存池节点增加,数据也增加,如何分配数据?(注意一致性hash是由外部提供的,memcached和redis本身不提供,推荐看下Tair);
4.JVM 6种gc和gc参数调优,要求举实际的例子;
5.线上系统故障如何排查?要求举实际例子,比如如何知道是磁盘空间已满导致业务上的问题?;
6.订单业务的预留和分配的具体实现步骤?分配是同步还是异步?业务对时限的要求?
7.Java单链表反转;
8.Oracle本身如何支持分页查询?写出sql分页?
9.讲一下B树索引;
10.谈谈Linux系统的一些常见的故障排除方法和调优策略?比如某个JAVA应用导致cpu100%,如何找到这个线程并定位原因解决问题?
11.只写后端吗?对前端开发熟悉吗?
12.多线程的实现方式,要求结合项目中用到多线程的地方详细讲解为什么这个业务要用多线程,而不用单线程?
13.数据库的分布式事物如何保证?锁的使用?锁策略?
14.设计模式熟悉吗?举几个实际例子并加以说明为什么要用这种设计模式?
15.workflow是如何选worker节点的?
其他一些小公司:
1.小白鼠喂药问题(艾漫智慧)
2.怎么理解Sharding?
以下2个问题(标号3、4)是一位在Google工作了26年的技术专家问我的问题,要完全答好这两个问题并不容易!
3.一个程序员应该具备什么素质?
4.设计一个接口系统应该注意些什么?
5.统计一篇文章中出现的不相同单词的个数,要考虑效率。
6.A和a的Ascii码哪个大?
7.写程序打印杨辉三角。
8.判断一个文件里重复的行及重复的行数。
9.说一下数据库连接池的原理。
一般都会根据简历项目问问题
从项目介绍到数据量、系统设计、存储和实现细节,然后会穿插基础性的问题或者比较有深度的问题
1.DB中有海量数据,找出其中某条数据,有哪些策略加快这个过程?如果用缓存,假如数据都能放进内存,怎么做比较快?
2.索引有那些分类?建(province,gender)这种索引,对下面两种查询有什么影响?
a.province & gender;
b.gender & province;
3.类似微博这种应用,涉及M:N的Productor&Consumer模型,其中M和N都非常大,如何在不对Queue加锁的情况下,快速处理这些用户请求?(暂不考虑缓存、LB)?
4.对MongoDB熟悉到何种程度?
5.如果给你一个应用,但你不熟悉,这时该怎么处理?
6.复制的模式?Java三大框架?设计模式?
7.数据量很大的情况下,如何做缓存?缓存的策略?
8.如何很快load一个页面?(前、后端角度)
9.对lucene 和Solr熟悉到什么程度?
10.有很多的用户同时发帖子,如何尽快在前端展示某个用户发的帖子?
假设某论坛是主从数据库,我发一个帖子后立即刷新页面,因为显示帖子是读,这个时候如果延迟比较厉害,就会提示 404 -———帖子不存在,这就有问题了;我们还要假设用户的容忍度是看见自己的新内容,别人新的内容可以有延迟(实际上延迟是很小的时间单位)。
针对这个假设的问题,可以采取几种方案:
a.有更新数据后的 读取相关数据动作,都从默认到主库;
b.利用缓存;插入新的数据,会有last_id返回,组装成数据,缓存到前端。读取此 id 数据时,先从缓存取。
11.实时搜索怎么做?Lucene支持实时搜索吗?
Lucene从2.9版本开始就支持实时索引和搜索,主要涉及的类是IndexReader.
12.在有代码规范要求时,MVC代码结构如何组织,比如前、后端,数据访问,业务逻辑,你是如何分类的?
13.项目中选用的什么web服务器?答:Nginx。追问:为什么?答:大家都在用。面试官直接无语加无奈...汗!
14.怎么看待技术?加班的看法?是否有其他问题要问?
搜狗:
1.贝叶斯;
2.给你一个xml树和其根节点,实现其遍历、查找、插入、删除;
3.单点登录;
4.字符串转数字,比如“-1982.30”(个人理解就是atoi);
当当网:你遇到最难解决的技术问题是什么?
mysql对于大表(千万级),要怎么优化呢?
【链接】MySQL对于千万级的大表要怎么优化?
http://www.zhihu.com/question/19719997
MySQL把主表拆分多个表后,如何解决查询效率问题?
【链接】MySQL把主表拆分多个表后,如何解决查询效率
http://www.zhihu.com/question/19986725
58同城高级Java开发工程师面试题
1.如果你现在CPU100%了,你如何查询是哪个进程,哪个线程,哪行代码占用CPU过高?
2.通过端口号查找jvm进程怎么查?
3.对spring的源码了解了多少。
4.https在tomcat中怎么配置,https在tomcat中默认端口号是多少?
5.目前能解决同步锁阻塞效率问题的线程池
6.比如说你缓存里存了个对象,可是有一天对象对应的类里增加或者删除了一条属性,你怎么处理这个缓存中的对象?
1.如果定义一个类,放入hashmap 哪些方法需要被重新编写;
2.请简述sleep()和wait()的区别;
3.内存泄露与溢出的区别;
1.有A到J十个人手拉手构成一个环,其中A和B不相邻,问一共有多少种排列方式?
2.代码的优化,给出下一段代码,请做出最好的优化
[cpp] view plaincopy
int f(n)
{
if(n<=4)
return n*n;
else
{
return f(n-4)f(n-1) - f(n-2)f(n-2);
}
}
3.有两枚硬币AB,其中A为正常硬币,B的两面都是人头,随机从AB中选出一枚,并抛向空中。求:1)若硬币落下后是人头,则是A的概率;2)连续抛n次,落下后都是人头,求是A的概率。
4.什么是同步IO和异步IO,各有什么优缺点?什么情况下用同步IO较好,什么时候用异步IO较好?
5.给定一个字符串,求串中字典序最大的子序列
抽象类和接口有什么区别
请说一下java中的内存回收机制所采用的算法
Sleep()和wait()有什么区别?
请列举几种排序算法,并用JAVA实现快速排序算法。
36辆车,6条跑道,无计时器,最少几次比赛可以选出前三
一个未排序的整形序列,比如10,20,3,7,5,9,4,2,90,给出这些数字当中最长连续数的长度,例子中的长度是 4[2,3,4,5]。算法复杂度最好为O(n)
两个线程,一个运行B.m1(),一个运行B.m2(),这个程序可能的行为有哪些?
Class A{
int f;
A(){f = 1;}
}
Class B{
A a;
void m1(){a = new A();}
void m2(){if(a != null) System.out.println(a.f);}
}
在N个无序数中找K个最小值
Hadoop集群的namenode上,当meta数据损坏之后如何修复?数据的丢失率是怎样计算?
目前需要对100台服务器做RAID ,有什么方式能够通过自动化的方式实现?
有超过10亿行的数据,每行第一列为唯一ID列,其余列为数值型列,假设数值型列分别为A,B,C,D,请问如何高效的实现一个算法能够完成:
某一列数值符合在某个区间的范围内的记录的条数
某一列数值符合在某个区间同时另一列数值在某个数值区间的记录的条数
某广告主在渠道投放每天有大量点击数据,包含每个点击的IP信息。请基于IP信息设计防止渠道作弊的算法和思路。
一个url文件,每行是一个url地址,可能有重复。
(1)统计每个url的频次,设计函数实现实现。
(2)设有10亿url,平均长度是20,现在机器有8G内存,怎么处理,写出思路。
20个亿整数的两个集合a与b,求a与b的交集,内存为4Gb
在N个无序数中找K个最小值
一个流式输入序列(method_name, latency),其中method_name大约有100万种,latency的取值为1到10亿的正整数,每天的数据量大概100亿条。限制最多 1GB的程序运行内存,设计一种方法,计算一天内每个method_name的50%,95%,99% percentile的latency,误差不超过5%。
《编程之美》
http://www.coolshell.cn/
《程序员面试金典》