今年的找工作之旅也差不多到尾声了,其实已经一两个月没有面试了,想了一下还是记录一下面的几个公司吧,只记得那些能记起来的了。
我面的岗位是Java研发工程师,所以涉及的都是这方面的知识点吧。。

实习篇

1.摩根士丹利

第一场面试就是摩根。。。面试官很nice,主要问的问题:
(1)介绍了一下项目并说说自己做的那一部分(介绍完才发现,自己做的太low了,还需准备)
(2)多态。c++中虚函数,在派生类中重写虚函数,在运行时怎么知道我具体是运行的哪个子类中的。
(3)java中常用的Collection有哪些
答: List,包括ArrayList和LinkedList。ArrayList内部是由数组实现的,可改变长度。LinkedList是链表实现的,不可改变长度。
问:你说的可变长度和不可变长度,是不是意味着你一般定义LinkedList的长度,比方说10,然后超过就不可以了?
答:不是的,不一定是要写明LinkedList的长度,不定义的话应该是机器决定你的LinkedList最大能开辟多少的空间。。我只要在我需要的范围内add数据。
问:那如果有很多很多的add操作,会遇到什么问题,不可能无限的空间给你add啊
答:是啊。。。所以有一定的范围,LinkedList最大能有多少空间我觉得应该是机器决定的吧,32位机和64位机应该不一样吧(蒙,其实我不太清楚)
问:好吧,还有其他你常用的Collection吗?
答: Set,主要有HashSet,TreeSet,LinkedHashSet,然后分别解释了一下这三者之间的不同
问:分析一下HashSet和TreeSet的复杂度,插入,查找等时候。
答: HashSet应该跟它的hash有关吧,如果只是普通的散列码,可能会造成很多冲突,这样链表就会比较长,查找的时候遍历链表时就会比较慢,但是你用优化方法去解决冲突,例如二次探测什么的,减少冲突,应该会比较快吧,TreeSet内部使用的红黑树,查找和插入顺序应该是O(log(N))吧。。。
然后就换另一问题了。。。没再继续问下去。


回头查了一下,我的回答不太准确。
  对于ArrayList和LinkedList,我竟然忘记说ArrayList是基于动态素组实现的,所以查询速度比较快,适用于频繁查询操作,LinkedList适合于频繁插入、删除的操作。。。
  至于ArrayList和LinkedList能存储的最大容量,ArrayList理论上不能超过Integer.MAX_VALUE,看文档说明

  至于LinkedList,由于它是由链表实现的,理论上不限制长度,看内存空间到底有多大。但是要注意的是,LinkedList也有size()函数,返回值有一定的限制。

(4)解释一下内部类,并写一个内部类和匿名内部类
答:内部类就是将一个类的定义放在另一类的定义内部。
然后我举了一个匿名内部类的例子,我们常用的Thread

Thread thread = new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stub}})

问:在你写的run()函数中,可以用外部定义的变量吗?
答:可以啊,匿名内部类总应该只能是final类型变量。。
问:你平常写一般的内部类比较多还是匿名内部类比较多
答:普通的内部类啊
问:举个例子
答:一时脑抽,想不起来具体的例子了,orz。。。。


补充:
  当生成一个内部类对象时,此对象与制造它的外围对象之间就有一种联系,所以它能访问其外围对象的所有成员,而不需要任何特殊条件。此外,内部类还拥有其外围类的所有元素的访问权。
  想想我们为什么要需要内部类?每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。由于类不能多继承,内部类能有效的实现”多重继承“
  举个内部类的例子:
  把Node类放在LinkedList类内部,每次插入一个元素时,生成Node类的一个对象。

(5)由上一题引出问题,加了static的内部类和不加static的区别。然后说一下对static关键字的理解。
加了static关键字的内部类即嵌套类。普通的内部类对象隐式地保存了一个引用,指向创建它的外部类对象,当内部类是static是,就不是这样了,意味着:
1)要创建嵌套类的对象,并不需要其外部类的对象
2)不能从嵌套类的对象中访问非静态的外围类对象。
普通内部类的字段和方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和字段,也不能包含嵌套类。但是嵌套类可以包含以上所有东西。

class A
{class B{// static int x; not allowed here}static class C{static int x; // allowed here}
}class Test
{public static void main(String… str){A a = new A();// Non-Static Inner Class// Requires enclosing instanceA.B obj1 = a.new B(); // Static Inner Class// No need for reference of object to the outer classA.C obj2 = new A.C(); }
}

对于static变量或方法等,不需要实例化类的对象就可以调用,它不是“面向对象”的。
(6)接口和抽象类的区别,自己写一个抽象类和接口的例子。例如你常用的接口有哪些
答:
接口与抽象类的区别:
1)抽象类可以有构造函数,接口没有
2)抽象类中有普通成员变量,接口中没有普通成员变量
3)抽象类中可以有抽象方法和非抽象方法,接口中的方法都是抽象的
4)抽象类中的抽象方法的访问类型可以是public,protected的,但是接口中的抽象方法只能是public的,默认是public static类型
5)抽象类中可以包含静态方法,但是接口中不能包含静态方法。
6)一个类可以实现多个接口,但是只能继承一个类。

常用的接口Runnable,,HttpServletRequest ,,HttpServletResponse 等等

其实感觉自己说的并不怎么好。
总结一些知识点:
常见的接口:Comparable ,Collection,Set,Map,List,Runnable等等
常用的类:java.lang.Object、java.lang.String、java.lang.StringBuffer、java.lang.Math、java.lang.System,java.util.Vector,java.util.Date,java.text.DecimalFormate
常用的包:java.lang、java.awt 、java.io 、java.util 、java.sql
常见的运行时错误:
Exception:
java.lang.NullPointerException,java.lang.ClassNotFoundException, java.lang.ArrayIndexOutOfBoundsException,java.lang.IllegalargumentException,
java.lang.InterruptedException

Error:
java.lang.StackOverflowError
java.lang.OutOfMemoryError

具体也可查看文档:点此

阿里

一面(2016.3.25)

1.自我介绍
2.介绍一下项目
3.根据项目(我有一个项目涉及到爬虫,就问了一点关于爬虫的问题)。给定一些爬取页面的url关系图,怎么判断现在遍历到的页面已经爬过了?有没有快速一点的方法?
4.讲一下List,Set,Map之间的区别。给出一串数字,要按输入的顺序输出,用哪种容器来存?如果我已经规定要用Map来存,那满足这种条件的话用什么Map,等等等等
5.java是一门面向对象的语言,讲一下其面向对象的特征
6.函数重写和函数覆盖的区别
7.抽象类和接口的区别
8.多线程一般怎么实现,什么时候用Runnable?什么时候选择用Thread,你的项目中有用过多线程吗?用在什么地方?
Runnable主要还是考虑到程序的扩展,因为java不支持多继承。
9.你会如何实现一个单例模式?
延迟加载 线程不安全
直接创建 线程安全

public class Singleton{//类加载时就初始化private static final Singleton instance = new Singleton();private Singleton(){}public static Singleton getInstance(){return instance;}
}

还可以参考下这个链接的内容
10.了解jvm吗?堆内存结构
11.数据库索引。假设我有一张表,在姓名name字段建立了索引,现在要找姓王的所有用户,sql语句怎么写? 什么时候建立的索引有效,什么时候建立的索引会失效? 如果在性别字段(只有男和女两种情况),有没有必要建索引?
select * from tb where name like “王%”
左匹配的时候可以用索引
有匹配的时候索引失效。 “%琴”这种,虽然name字段建立了一个索引,但是没有用。
12.项目用了什么框架?
13.讲讲你对spring框架的理解?它有什么优点?
14.jsp 的四个作用域 :page、request、session和application的区别
15.session是怎么跟踪用户信息的?我怎么知道这个用户就是之前登录的用户?
16.OOM,碰到过哪些?一般怎么想办法解决的?
17.bean中作用域singleton和prototype的区别?
18.进程与线程的区别

二面(2016.4.6)

1.自我介绍
2.介绍项目,碰到什么难点,怎么解决的? 我说了一些,然后说要改些什么,问那有什么改进的想法了吗。。
3.讲一下jvm类加载过程
4.有没有做过开源项目,看过的开源项目
5.对未来有什么规划
6.关于岗位的(意思是如果换岗,会接收吗?)
7.有什么想问的问题

网易(2016.4.6)

一面

1.项目用到哪些技术
2.spring框架有哪些优点
3.AOP。。一般你是怎么实现的?答:代理。。哪些代理? 动态代理和cglib动态代理区别
4.用过哪些集合。写一个链表中删除元素的代码。(我有用迭代器+remove操作),remove操作可能会出现什么问题
5.给一个链表,怎么实现排序(答,继承Comparable接口重写compareTo函数,或者自定义比较函数),问两者又有什么区别。。
6.线程。项目中用到多线程吗?什么情况下用?
7.如何返回线程的状态(答的currentThread()是获取当前线程的状态,答错了。。。)

Class A()
{.........synchronized(this)//(1){}synchronized(A.class)//(2){}
}

Thread t1,t2指向的是同一个对象,当t1进入(1),t2能进入(1)吗?能进入(2)吗?延伸好多,记不太清

8.在写同步的时候要注意的问题,例如用synchronized时会出现什么问题?(答,可能会出现死锁之类的,举了个例子,不知道答得在不在点上)
9.jvm。。学了些什么,说一说。就介绍了一下类加载等过程
10.接触过哪些设计模式。举例
11.hashMap,ConcurrentHashMap

二面

1.描述在浏览器中敲入一个网址后所发生的事情
2.DNS端口号
3.get/post区别
4.纸上写题,字符串反转
5.有没有接触过分布式,hadoop之类的
6.线程有哪些实现方式
7.垃圾回收过程
8.给出2G的内存,大概可以建多少个线程

校招一面

被虐。。
1.数据库:事务(包括ACID属性), Innodb
有一张表,id,userid,type,money
(1)求出前五项消费最高的类目
(2)求出每个类目下消费最高的用户id
2.网路编程
3.操作系统
4.项目中要到多线程的地方,包括爬虫用到多线程的地方都要了解
5.jvm内存管理,GC,查看GC的命令

腾讯

1.C++多态,常用的STL
2.vector,list区别,其内部的排序算法用的是哪种排序
给出一个链表,能用快排进行排序吗?(不能开辟额外空间)
3.用过网络编程吗?(木有) TCP 连接,断开过程,窗口,拥塞控制
4.内存管理
5.map是怎么实现的,hash key值时复杂度,如果不用hash,用平衡二叉树怎么样?两者有什么优劣?map插入删除时如果多线程的话怎么保证线程安全?如果用的是hash算法,当链表太长是,需要rehash,怎么保证线程安全。。。
5.文件系统,linux (不会,orz)
6.手写程序,给出一颗完全二叉树,现在要插入下一个节点,怎么实现,时间复杂度多少?(我写了一个log2N∗log2Nlog_2N * log_2 N 的。。)
貌似就这些,中间展开比较多,还谈了一些比赛,项目。。

微软

一面:

1.聊了一部分项目
2.有一个大文件,里面存着URL,现要随机取K个URL,怎么随机抽取并写入到文件。
可以参考这个博客

二面:

1.给出一个int范围内的数,例如10,转换成二进制数为0000….1010,求出这个二进制数中有多少个0构成的块,0000…00001010 ,有3个0构成的块
2.给出含有n个元素的int类型的数组和一个int类型的数K,求数组中的那些元素乘积等于K,给出所有元素的组合

三面:

1.有两个字符串,例如S1=abcbcd,S2=abcd,求S2是否包含在S1中,如果有,则输出每种结果对应的下标,例如S1=abcbcd,S2=abcd时,下标的组合:{0125,0145,0345}
2.现有32G的数据,但是只有8G的内存,怎么对这些数进行排序。
3.有一个大文件,里面存着电话号码,现给出一个电话号码,判断该电话号码在不在该文件中。
4.现有一个大文件,存着电话号码该该电话号码对应的话费记录,选出前10000个消费最高的电话号码(NlogK)

校招篇

京东

1.介绍简历中的项目
2.爬虫url去重,bloomfilter原理,影响bloomfilter效率的两个参数
3.数据库。我说了mybatis,参数中$和#的区别;悲观锁、乐观锁;Innodb和MyISAM的区别;数据库优化,索引,怎么快速查看索引建立的索引有没有生效;数据库执行计划;。
4.sql注入和防范方法;垂直越权。
5.实现多线程的几种方法;Future的特点。
6.开放题。如果服务器上运行了一个程序,过一段时间发现他运行越来越慢,费时了,可能是什么原因造成的,你会从哪些角度来考虑?
答:分析一下日志,有可能是内存问题,导致一直产生full gc,那可能就影响速度了。。比如一开始分配内存不足,所需的对象又占较大内存。。。blabla
问:那怎么找到这个有问题的对象。。
答:blabla。。。
问:现在假设内存是正常的,那有可能是什么原因?
答:那可能程序有bug等,执行费时的程序。。jvm没有优化等等。。
问:那怎么找到有问题的代码。。orz
答:blabla。。
问:现在假设这些都不是问题,线下测试是正常的,线上比较慢。。又是什么原因?
答:网络问题吧。。地址解析。。有没有缓存等,或者防火墙拦截?。。blabla。。
感觉在乱答。。orz。。
7.手写程序,写一段你认为最好的单例模式的代码
8.有没有用linux,hadoop等,有哪些你认为是自己的有点我没有提到的?有什么想问我的。。
还有哪些。。忘记了。。。

网易

一面

spring AOP,IOC,bean默认:singleton
spring MVC
synchronized和lock
Collection
jvm:内存都组成,GC
HashMap和CurrentHashMap的不同,HashMap的内部实现所用的结构
缓存,一级缓存,二级缓存
线程池
红黑树

二面

Collection和Collections
IO和NIO
jvm:-Xmn,-Xms,-Xmx分别代表什么,-XX:SurvivorRatio的含义
优先队列的内部实现
斐波那契的实现
关系型数据库,非关系型数据库
生产者和消费者
开放题:
了解的一些中间件
在看的相关领域的书
java比较流行的一些框架

好像还有华为,腾讯之类的,腾讯二面跪了,各种分布式的知识,刚好碰到来了自己不熟了一块,打的不好,校招面试差不多和实习的类似,就不记了。
总而言之,实习面试就是刷经验的,第一场面试担心的要死,面到后来都麻木了,也不太会紧张了,所以实习面试的时候要多刷一下。

准备资料

  面试主要还是考察基础知识扎不扎实。当然,我们这个专业,项目经验也是丰富一点的好,主要能说出自己参与的内容,几个亮点。
  整理一下我主要看的一些书:

基础篇(Java)

  《Java编程思想》(一些基础,遇到不熟的时候翻一翻)
  《Effective Java》
  《Java并发编程实践》
  《深入理解Java虚拟机》
  《Java面试宝典》(虽然看了,但是感觉很一般。。还是看看其他系统的书,早点准备的好)
  上面是我看的一部分Java的书,都还是不错的,但是书毕竟是理论,还是要结合工程等,时间操作一遍印象更深刻。
  能看一些源码是最好不过了,可以学到不少。简短一点的,MyBatis的源码可以看看,还是能看的,也能学到不少设计模式等知识。

网络篇

  网络的相关知识在面试中也是经常遇到。下面的书可做参考:
  《HTTP权威指南》
  《TCP-IP协议族》
  《TCP-IP详解卷1:协议》(有好几卷,基础的话看看卷1好了)
  网络我基础不太好,面试中当然也是问一些很基础的网络知识,把基础补补好。
  

数据库

  数据库的其实看的不多。这边还不错吧
  《高性能MySQL》

分布式

  我对分布式不熟悉,但是其实蛮重要的,要在实践中去学,面试其实面的不多,就腾讯什么的好像问到了。
  《大型分布式网站架构 设计与实践》
  《大型网站技术架构 核心原理与案例分析》
  我就稍微看了一点上面两本书,还可以,面试的问题其实书上也提到过的,只是我自己没有相关的项目实践,所以面试的时候也没答好,能配合项目去操作一遍再好不过吧。

算法篇

  算法的话,还是看你要面试什么公司吧,外企什么的那可能要算法啦,耍耍leetcode之类的。其他国内的互联网公司其实问的不多,就面试到最后问个一题,或者干脆不问。要面试外企的则要好好刷题。
  《编程之美》
  《剑指offer》
  算法光看书没什么软用,需自己把书上的题自己实现一遍,《剑指offer》上的题很多在leetcode上是有的,可以去那边刷一下验证一下自己的想法。

其他

  操作系统很惭愧,我没有好好准备这一块,一块软肋。。
  《设计模式 可复用面向对象软件的基础》(这本看起来挺枯燥的,我一般看网上的资料,然后看一眼这本书中的介绍。单例模式当然是问的比较多的,几种实现方法要能写出来。设计模式需掌握各3-4种比较常见的)
  《疯狂Java讲义》
  要需要了解一些框架,比如Spring,知道AOP,IoC之类的概念,MVC等,这个做过相关工程的话应该还是能说上一些的。

  面试的准备貌似就看了上面的一些书吧。重在实践2333。虽是投了Java开发岗,肯定还是不能只关注于此,做实验处理数据什么的就觉得Python比Java好用多了。。(●’◡’●)
  还有关注一些互联网的事实,一些发展,可以扯扯淡,主要用于面试到后期的情况吧,前期主要面基础。。别再基础面挂了就好,哈哈哈。

2016年互联网面试总结相关推荐

  1. 互联网面试知识点总结(三)- 计算机网络篇

    互联网面试知识点总结(三)- 计算机网络篇 ******************************* 概 述 ******************************* 一. OSI七层模型 ...

  2. 2016阿里实习生面试经历

    2016阿里实习生面试经历 这是一次失败的经历,分享出来一方面是为了告诫自己,也和大家分享下失败的经验. 我是在4月23参加阿里笔试的,阿里笔试是没有摄像头监控,不像腾讯那样.正如阿里说的:" ...

  3. 腾讯实习生面试2016两道面试题目?(知乎)

    腾讯实习生面试2016两道面试题目?修改 谢谢大神们高质量的回答,满满干货,excited ------------------------------------------------------ ...

  4. “启智创新 连接未来”2016中国移动互联网年会在京举办

    6月21日,由中国互联网协会移动互联网工作委员会主办的"2016中国移动互联网年会"在北京国际会议中心举行.今年年会的主题是"启智创新,连接未来",与往年相比, ...

  5. 2016中国“互联网+”千人论坛隆重举行 郎永淳主持 杨学山刘九如等嘉宾出席

    2016年9月3日,由CIO时代网.中国互联网协会."互联网+"研究咨询中心.正益移动AppCan联合主办,中国互联网协会互联网工业应用委员会协办的2016中国"互联网+ ...

  6. China Operating System 电脑操作系统 2016全球互联网排名

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 电脑操作系统 China Operating System 2016全球互联网排名 == ...

  7. 试讲教案模板 计算机 网络,2016下半年信息技术面试教案设计模板

    2016下半年信息技术面试教案设计模板 教师资格证面试即将到来,很多朋友还在为教案的书写而发愁,下面小编给大家整理了初中信息技术面试的教案设计的一些范文,大家可以参考学习. <美化word文档- ...

  8. ASO100:2016移动互联网发展白皮书

    2017年1月5日, ASO100大数据研究中心发布了<2016移动互联网发展白皮书>.2016年是国内移动互联网逐渐趋于理性的一年,从业者开始重新审视整个行业.尽管移动创业"改 ...

  9. 2016腾讯面试经验

    [实习面试]阿里&腾讯offer的点点滴滴(内附干货)2016 前言: - 4月8号下午6点,突然接到腾讯hr的电话,本来已经不抱希望的我一脸懵逼,差点连自我介绍都不会说了.之所以不抱希望,是 ...

最新文章

  1. 辞退了一名 2 年工作经验的前端工程师
  2. WebStorm Git 分支操作
  3. 安装ESXI 5.1
  4. Shiro与Spring集成时,Shiro权限注解@RequiresRoles等不生效的解决方案
  5. python开发需要学什么_用Python进行web开发需要学习什么?
  6. Windows Phone 知识锦(12月版)
  7. python close_wait_TCP time_wait close_wait问题(可能是全网最清楚的例子)
  8. OpenCV算法精解1--OpenCV中C++基本操作1
  9. 雅思c1语言等级,雅思分数各代表什么水平
  10. Matalab2010b安装过程中遇到的问题汇总
  11. 简单了解一下电商系统中的SPU、SKU、ID,它们都是什么意思,三者又有什么区别和联系呢?
  12. socket: (10106) 无法加载或初始化请求的服务提供程序。
  13. 部署blog的时候,出现了以下错误
  14. 安装BT5 backtrack5 linux 无线网卡驱动
  15. 各种电平标准的讨论(TTL,ECL,PECL,LVDS、CMOS、CML.......)
  16. SAP消耗性物料采购前台操作及后台配置
  17. 计算机开机错误62,联想电脑开机显示Error 1962 no operating system解决方法
  18. 为右键新建菜单添加自定义后缀(.html, .css, .js, .py)项
  19. 正则表达式——URL验证
  20. codeforces1404C Fixed Point Removal

热门文章

  1. drop box java_使用Dropbox Java API将文件上载到Dropbox
  2. 自己留着用的 .net 图片水印 方法
  3. 投资区块链项目的四大必修课
  4. RFID中的s50卡
  5. 计算机无法与打印机建立,电脑无法与打印机连接 计算机网考题目2(6)
  6. 全志Tina Linux 系统裁剪 boot0裁剪 uboot裁剪 内核裁剪 文件系统裁剪 C库裁剪 文件系统压缩
  7. Smartbi:银行数字化转型案例分享
  8. Dmoz对Google的PageRank影响(转)
  9. easypoi导出word文档(文本,表格)
  10. html页面点击小图弹出大图代码,利用JS实现点击小图弹出大图代码