名企面试题

京东面试题:
1.说说值对象与引用对象的区别?
2.谈谈你对反射机制的理解及其用途?
3.ArrayList、Vector、LinkedList的区别及其优缺点?HashMap、HashTable的区别及其优缺点?
3.列出线程的实现方式?如何实现同步?
4.sql题,是一个图表,具体忘了
5.列出至少五种设计模式?用代码或UML类图描述其中两种设计模式的原理?
6.谈谈你最近正在研究的技术,谈谈你最近项目中用到的技术难点及其解决思路。
7.请以30岁程序员为话题写一篇短文,可以包括你对薪资的期望,你的经历,你的人际关系,你的职业规划等
问了个多态的作用?可复用性,可扩充性和可维护性 剥离接口和实现
态简单的说就是单接口多实现。在面向过程分析方法中,整个系统是由数据流驱动的一个组织严密的体系,
而面向对象分析方法则强调各对象是相对独立的,只有在特定场景中才会产生交互,多态特性维护了对象交互的稳定性。

嗯,浓缩成一句话的话,应该就是降低代码耦合度了。
百度面试题
对公司内部的部门,所以没有算法题,全是应用题,并且hibernate的题很多,估计应用肯定是hibernate了
简答题
1 spring ioc、aop 的原理
2 hibernate 延迟加载原理
3 事务隔离级别 什么情况下用低的或者用高的
4 事务传播方式哪几种
5 ajax 跨域如何实现
6 MQ是否应该保持顺序 保持是否的优劣
7 乐观锁与悲观锁,举例场景
8 cookie 与session 区别和联系,http 协议是无状态的,怎么区分不同登录用户
9 阐述opensessionview一下, 用和不用 数据库连接、transaction session 之间 开启和关闭顺序

大题
1.设计一个权限系统 ,要求若干(我就阐述了一下rbac的原则,简单说了一下设计的表和思路)
2.设计 一个b/s结构 mvc框架,要求若干(我着重说明了一下控制转发这块的设计思路)

初始化顺序:父类静态块或静态变量,子类静态块或静态变量,父类变量或者块,父类构造方法,子类变量或者块,子类构造方法

首先,等同于:String s=3+ "a" + "b" + 3 + "c";
又:对于String的+操作会转化为StringBuffer.append,另外String常量都是对象,并且是“不变、共享的”,因此相当于这样:
String num3="3";
String a="a";
String b="b";
String c="c";
String s=num3+a+b+num3+c;
String s=new StringBuffer().append(num3).append(a).append(b).append(num3).append(c).toString();

算式右边有4个对象,右边的2个3只对应一个String对象,整个算式算下来,产生了一个String对象“3ab3c”,
除掉被回收的那个无名的StringBuffer外(这个应该是不算在内的),总共产生了5个对象。

我觉得这里有几点是关键:

1 String常量是对象(虽然程序中没有引用)

2 对String的+操作符会将非String转为String,再经由StringBuffer产生新String

3 String是不变类,String对象是共享的。这里“3”这个String只有一个实例,并没有产生2个对象

4 上面那个算式要先算1+2得到3

我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,
它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造器。
我们也可以通过下面的测试代码来验证这一点:

华为赛门铁克面试:
1.问了很多线程方面的,就线程方面的一些吧,比如collection里面的线程安全的类列举一下
2.让我讲了一下自己涉及的设计模式,叫我写了一下单例模式
3.还有就是问了spring的aop具体是怎么实现的,这个我没打出来
4.线程还问了sleep和wait方法的区别,以及锁方面的一些东西
5.还有就是问了让我自己实现一个arraylist,自己会怎么写,说一下思路
6.自己写一个hashmap会怎么实现,hashmap查找的效率高还是排序的数组查找效率高
7.实现线程有哪些方式,有什么优缺点,这个应该很简单吧

阿里面试题:
原来人家都把问题答案挂上来了,只是我没有去留意而矣。怎么说好呢,很死板,但也有效,很简单。
http://www.iteye.com/job/topic/1032650?page=3
支付宝杭州面试不完全攻略(附赠真题若干)
1、Cookie与Session区别
服务端跟客户端
2、Post与Get区别
显示传输跟form传输 post有字节数限制 form没有限制可以传输流
3、谈Java的垃圾回收机制
内存分:堆 栈 方法区 垃圾回收一般指的是堆回收 堆分新区老区 新区又分伊甸区跟救济区1,救济区2 ,
里面主要是coping方式回收 回收方式分串行并行并发, 回收算法分有向图发 coping法 火车头算法。
引用计数法在jdk1.5中已经抛弃.大体上分局部垃圾回收 跟full GC
4、如何实现线程安全、高可用的hashMap
就是jdk1.5中的concurrentHashMap的实现原理,分块,对块加LOCK
5、重写equal()还得实现什么方法
hashCode()
6、条件查询慢如何优化
索引 分区(垂直 水平) 缓存 表优化 SQL优化
7、写查询各学科选修人数SQL
8、事务属性包括哪些?Spring、Jdbc举例
ACID 原子 持久 一致 隔离
9、JVM的最大进程数
win32 2000 linux 1000
10、集群部署
11、treeMap程序运行
存放在里面的数据是默认排序的 或者按字符串或者按整型变量大小
12、linux指令,本人没搞过,是解析字符串之类的
cat name.txt|grep ""
13、mysql创建序列等几个mysql的题

1)处理并发问题,高并发HasMap(读写HashMap),HashMap如何避免key重复
2)多线程通信问题(传值、唤醒之类)
3)JVM 内存管理,GC回收、分类
4)TCP NIO的历史bug等等
5)2Core、2G的机子对2TB文本排序
6)String的indexOf实现
7)12球的称法,3个囚犯分汤
8)项目上遇到的问题,如何解决
9)开源项目,JDK部分包的源码等

1)处理并发问题,高并发HasMap(读写HashMap),HashMap如何避免key重复
2)多线程通信问题(传值、唤醒之类)
3)JVM 内存管理,GC回收、分类
4)TCP NIO的历史bug等等
5)2Core、2G的机子对2TB文本排序
6)String的indexOf实现
7)12球的称法,3个囚犯分汤
8)项目上遇到的问题,如何解决
9)开源项目,JDK部分包的源码等

1、自我介绍。
还有诸如是否结婚。是否有意愿来杭州发展(其实本人觉得:百万年薪,非洲都可以去)
2、为什么离职
3、技术方面有哪些优势?哪些不足?如何弥补?
4、服务器有没有过宕机?为什么?如何处理
5、如何处理并发?锁机制
6、如何找到消耗比较大的SQL
7、项目情况。最大困难、规模/访问量、日志如何处理、个人在项目中的最大价值、几个业务的详细处理流程。如何进行代码质量控制。
8、你有什么问题需要了解(个人比较俗,除了money还真不知道问点什么,还请有经验的大大指教)
二、笔试
规定时间1小时。感觉只花了40分钟,赶时间面试就没再答了。
1、Cookie与Session区别
2、Post与Get区别
3、谈Java的垃圾回收机制
4、如何实现线程安全、高可用的hashMap
5、重写equal()还得实现什么方法
6、条件查询慢如何优化
7、写查询各学科选修人数SQL
学生 学科 选课
id id 学生id
name name 学科id
8、事务属性包括哪些?Spring、Jdbc举例
9、JVM的最大线程数 (这个问题的讨论http://www.iteye.com/topic/1035818)
10、集群部署
11、treeMap程序运行
12、linux指令,本人没搞过,是解析字符串之类的
13、mysql创建序列等几个mysql的题

三、第一轮面试
面试官两名,轮流提问,。时间:1小时
1、项目情况。问得比较详细,系统架构、包含哪些业务啊,采用的技术啊,并发问题的解决策略等等。
2、如何看待加班这个问题(Ps:画外音估计就是这里是常加班的,碰到这个问题,弱势一方比较有利的只能顺坡下)

面试要点:
了解一下教育背景,是否有真正做过文本分类的算法,可以了解一下分类算法是否熟悉
是否有过B/S的开发经验
传递参数时,什么时候是值传递,什么时候是引用传递
是否使用过JDBC,JDBC的使用方法
try-catch-finally中,如果在try或catch中有return过,是否还执行
简述快速排序
不是用中间变量实现swap(x,y)函数
1、 除了在从前的项目中使用了哪些开源框架开发外,需注重他们是否清楚框架的工作原理;
Jdk1.5新特性,
Spring的原理,事务如何管理,如何防止脏读数据,
你最有成就感的项目,
说说方法sysnchrnized 和方法块sysnchrnized区别,
Hibernate的延迟加载,session何时开启,何时关闭.

2、对java应用的内存处理机制,线程工作原理,并有没有在项目中实际解决该类问题的经验;
3、 有没有在项目中有过系统性能调优,性能跟踪,内存泄漏定位等相关经验,
4、 在解决实际问题时,是否有了解解决问题方法的本质(解决方案的系统原理);
5、 对关系型数据库工作原理,以及关键性能影响点的了解及项目中的实际经验;
6、 是否爱好技术,愿意不断投入时间去跟进,学习(学习的深入度,是否能结合系统原理来看一些新技术);

Java面试题
1.string,stringbuffer 和stringbuilder的区别
2.struts1和2的区别
3.ArrayList,HashMap,HashTable区别
4.谈谈NIO
5.Weblogic怎么发布一个JMS
6.OBJECT有些什么函数,都是做什么用的
7.JSP,SERVLE是线程安全的吗?为什么?
8.了解SOA吗?
9.网页中跨域访问的问题怎么解决
10.ibtas中怎么设置OS CACHE

JAVA面试基础测试题
1.抽象:
 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

7、String 和StringBuffer的区别
 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。

9、说出Servlet的生命周期,并说出Servlet和CGI的区别。
 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
(我2434298599)10、说出ArrayList,Vector, LinkedList的存储性能和特性
 ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

14、HashMap和Hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

16、sleep() 和 wait() 有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。


百度java开发面试题(2011-12-XX)

第一面
项目:
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自诩也是混场面的,但是从心里希望自己在技术上也能再往前走一步。


根据记忆整理如下:

1. 有一个集合a,里面有n个正整数,乱序排列。给定一个正整数N,求,a中任意两个数相加等于N,共有哪些种组合情况。例如,集合为{1,3,44,2,4,5,54,222,368} N=6,则结果集为{1,5},{2,4}
这个题网上有类似的

2. Treemap的实现。
各种集合类的结构和优缺点,大家都挺爱考的。以前做行业信息化,没什么感觉,但是如果很在意性能,搞清楚还是挺有用的。

3. 有两个很大的文件,每个文件中都有1亿行,每行一个整数。问这两个集合的交集是什么。给定的前提是机器内存不足以完全装入任意一个文件。
这个几乎是网上的原题了

4. 堆和栈的定义,堆和栈里面的对象,哪个运行速度快。
还问了一些衍生的问题,记不清了,只要看清楚java教材关于这方面的介绍足矣

5. 为了实现一个折线图,需要将数据存入一种数据结构,折线图横坐标是时间,纵坐标是值,经常的查询是按时间段进行查询,如select value from t where begin>’20110101’ and end<’20111212’ ,问,使用java中的那种数据结构比较好。
还是考java中的各种集合类,本质上是问各种数据结构在顺序/随机的读取/插入上的效率

6. 数据库的索引通常用什么数据结构实现?为什么用这种数据结构。
就知道是btree,但是btree是咋回事,为啥不能用其他tree或者别的结构,这个看过一篇帖子以后才明白。算是学习了。

7. 如果数据库中有2个表,表a字段为姓名、年龄,表b字段为姓名、单位。现在使用姓名字段做left join查询,假设姓名字段都有索引了。问数据库是怎么实现的。如果把这两个表看为在内存中的数组,要自己实现left join,怎么实现?
面试官看我实在不知道数据库里leftjoin怎么实现的,就让我自己实现一个内存中的,勉强答出来了吧,但是可能不太好。

8. 数据库各种事务隔离级别
这个是纯不记得了,以前工作中从来用不到,真是汗颜。

9. wait()方法和notify()方法干什么用的,wait()方法有什么使用限制,是哪儿都能用么?
对于一个从来不用多线程的人,这么简单的问题也变得有点儿难。只知道干什么用的,不知道有什么限制。

10. 数据库中有一个表有上亿的数据量,怎么优化?(主要是拆分,除了按业务拆分外,还有什么从技术角度的,可扩展性好的水平拆分方式)
思路是拆没错,但是面试官问的不是业务拆分策略,而是从技术上考虑。还得考虑扩展性,比如拆好以后,数据量增长迅速,又要拆了,怎么办。这个水平拆分策略有好多,网上能搜到。但是我说的都不是很有体系,以前没弄过,都是现场想。。

ps:当时上新东方的时候,老师说,有的时候虽然你英语不好,但是有几个单词只要你记住了,说的时候塞到句子里,人家就会觉得你特地道,
比如absolutely之流。我觉得面试的时候也有这种key words,比如位排序之流,说的时候还得特举重若轻。适用于各类新手和平时工作中压根用不到各种排序算法的人,

主题:淘宝北京专场java面试题(2011-12-31)

第一面
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、是否参加过开源项目
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值