1.内存模型
2.谈谈了解的集合,arraylist和linkedlist区别,使用场景,concurrenthashmap讲一下。
3.线程同步的方式,synchronized和lock有啥区别,volatile讲一下,AtomicInteger怎么自增的,cas自旋
4.垃圾回收算法,回收机制。
1.标记-清除算法
2.复制算法(Java堆中新生代的垃圾回收算法)
3.标记-压缩算法(或称为标记-整理算法,Java堆中老年代的垃圾回收算法)
5.myisam和innodb的区别,事务的隔离级别,索引讲一下,什么情况下用索引
6.string, stringbuilder和stringbuffer有啥不一样
7.手撕代码就很简单的算法,忘了
8.平时怎么自学java的,通过哪些途径。
9.redis了解么,rdb和aof的区别,slot有什么作用
10.NIO了解么,讲一下
11.线程池了解么,各个参数干嘛的,具体讲一下
12.TCP和UDP区别,三次握手四次挥手,如何保证可靠性,拥塞控制讲一下
1.怎么学的java啊(感觉都爱问我这个,因为我java是纯自学吧,想通过这个看我都学了啥然后决定提什么样的问题)
2.设计模式了解么,单例讲一下,懒汉饿汉double-check,怎么实现。策略模式,代理模式,适配器模式,装饰器模式,分别讲一下
3.联合索引什么时候不会触发索引
4.AOP了解么,有什么好处,如何使用,怎么实现的
5.支付宝到银行的转账业务怎么实现, 瞎扯一通
6.redis实现分布式锁, 瞎扯一通
7.三台机器集群,按不同权重访问,怎么做
3月22日接到的电话,约到了晚上8-10点,等了一晚上没消息,以为被鸽了,结果9点半才接到电话,聊了30分钟左右,蚂蚁的员工真敬业!
Q:自我介绍
Q:最有难度的项目
Q:对线程安全的理解
A:两个线程执行同一段代码,不会出现不可预测的结果,则认为是线程安全
Q:比如有一个局部变量i=1,两个线程同时执行,是否线程安全
A:局部变量保存在虚拟机栈,为线程独享,是线程安全
注意是局部变量
Q:比如再有一个共享变量,如何保证线程安全
A:乐观锁与悲观锁保证。乐观锁,使用原子变量,比如AtomicInteger。悲观锁,使用synchronized关键字或者ReentrantLock
Q:说说ThreadLocal,底层如何实现
A:试过用ThreadLocal+SpringAOP动态切换mysql主从数据源,实现读写分离,是一种用空间换时间的办法。底层没看过
Q:hashmap实现原理
A:hashing的原理,(具体再说put和get的工作过程)
Q:volatile关键字,解决了什么问题
A:强制主内存和工作内存的变量同步,保证了内存可见性以及有序性。(线程安全三大特性:原子性、内存可见性、有序性)
Q:类加载机制
A:(有点忘记了,简单说了下)双亲委派模型,类加载器要加载一个类,会先交给父类加载器加载,等于先通过jvm底层内存类加载器加载,防止类的重复加载,以及保证类加载的安全性
Q:jvm内存分布/内存结构?栈和堆的区别?堆的结构?为什么两个survivor区?
A:jvm内存5部分:程序计数器、本地方法栈、虚拟机栈为线程私有,堆内存、方法区为线程共享。堆分为新生代和老年代,新生代分为eden区+2个大小一样的survivor区。两个survivor区用于实现垃圾收集中的复制算法,非常高效。
Q:对象在堆内存创建的生命周期
A:先在eden区创建对象,经过一次垃圾收集之后,未被收集的对象移到survivor区,每次垃圾收集survivor区里面未被收集的对象交替移动,经过一定次数的垃圾收集之后对象移到老年代。或者一些大对象直接在老年代创建。
Q:Spring的原理?AOP的实现?
A:Spring主要是IOC和AOP两部分,AOP两种实现方式:jdk动态代理和cglib(补充:区别在于,jdk动态代理通过代理接口,cglib通过实现子类进行代理)
Q:面向对象的设计原则?OCP?
A:6个,OCP、单一职责。。。OCP是对扩展开放,对修改封闭(好难记,真不记得,就算记得也不是很理解什么意思,要找个时间专门理解一下)
Q:分布式系统如何保证数据一致性
A:(这个真不了解,碰了一下运气说一致性哈希算法)被说这是负载均衡一致性,他问的是数据一致性(后来想到两阶段提交算不算?)
Q:有一个方法接收一个消息类型数据,通过if-else处理,如何优化
A:通过工厂方法模式,工厂方法模式是工厂接口创建产品接口
Q:设计一个秒杀系统?考虑哪些问题?
A:(没什么经验,随意说了一下)数据存储,不能直接交互数据库,使用redis缓存存储;处理高并发问题,负载均衡。。。(是不是也可以提到消息队列削峰,秒杀结束处理请求直接返回静态页面)
问了消息队列,但个人不是特别了解,问了工作年限,因为觉得我基础可以,但是大型项目经验比较差劲
Q:有什么问题想问
A:问了一下自己的表现
简单记录了一下并且写了一下答案,攒人品!
面试官没有问得很深入,可能因为天色已晚,就是对于线程安全高并发比较看重是真的,整个面试过程还是聊得挺愉快,收获很大,蚂蚁的面试官还是很nice,很有耐心,引导性地提问,下一次可能就要真枪实弹地撸代码了,祝自己好运!什么消息队列,分布式数据一致性,秒杀系统,回头必须补。
希望大家都能拿到心仪的offer!
1.一个10M的文件,一行一个ip,统计每个ip出现的次数,并降序排列
HashMap
2.设计生产者消费者模型,生产者生产随机数,消费者在控制台打印出来
然后面试官出去了,手机什么全部不收,还好简历都忘记打印的我竟然带了草稿纸和笔,最后总算写完了。
而最喜剧性的是,这段时间一直练着两个线程轮流打印1-100的奇偶数,直到看到面试官跟着进面试地点的过程中还在临时想起并补着生产者消费者模型,毫不夸张地说,我当时手机解锁看到的就是介绍生产者消费者模型的网页。只能说,技术都是相通的,理解一个技术原理,可能就能解决100个相似问题。
面试官现场review,问了为什么没用阻塞队列,坦白说自己有了解过,但不是很熟
然后开始提出各种与code没关问题,我感觉算是第三面。
以下内容,全凭记忆
Q:从http请求发出到响应的整个流程
A:不太确定想问什么,一边确认一边在面试官引导下说:http请求发出之后,通过dns解析域名获得ip,然后通过路由找到目标主机,通过端口交给应用层,响应。。。然后因为往自己会的扯,比如SpringMVC的运行流程。。。(提供思路,大家自己找答案,网络菜鸡面试的时候说出来自己都怀疑人生)
Q:追问如何http请求发送过来之后如何拦截,怎样配置拦截,具体怎样拦截
(只知道tomcat拦截,在web.xml中配置,感觉是在问tomcat底层)
Q:说说类加载机制,可以自定义类加载器吗,为什么要自定义类加载器
(上篇有同学提醒类加载器遗漏什么点,没有复习结果又被问到,真想现场爆炸)
Q:了解什么分布式数据一致性算法,具体说说
(答了zookeeper用的paxos,还有raft算法,有个面经也提到了:蚂蚁金服面经(3+4),只恨自己看到了没好好背)
Q:再次问了设计秒杀系统
(原地爆炸第二次,所以大家每次面完遗漏的知识点一定要及时补充,不一定要很全面,但至少能说一下,我上次面完都用来看分布式数据一致性保证(算法层面难懂没有效果),还有数据库的索引能理解结果没被问)
Q:说说同步和异步,什么时候用同步,什么时候用异步
(举了个前端的例子,地址栏请求和ajax请求,看面试官反应马上再举个后端例子,比如耗时操作,不需要马上展示给用户的操作)
接下来就很玄乎的
在linux上面用过什么调优工具,用过什么监控工具,怎样监控自己应用资源消耗情况,如果CPU占用资源很高有可能是什么问题,CPU占用资源低但是系统响应速度很慢可能是什么问题,jvm怎样调优,堆内存栈空间设置多少合适。。。
请大家自行感受我绝望的内心。。。
一面(技术面):
自我介绍
static关键字的含义
final关键字的含义
用while写一个死循环?(面试官大概觉得我是女生,给我放水)
(就记得这些了)
二面(综合面):
没有问技术问题,只是谈人生,但是面试官成功把我聊火大了
面试官:你将来会留在***城市吗?答:会,因为我的朋友,老师,还有部分亲人都在这个城市,而且这个城市很宜居,我愿意留下。
面试官:你有男朋友吗?答:没有(我真没有?)。
面试官:你为什么没有,为什么不找一个,为什么找不到……。我一脸懵,但是有点炸毛了
面试官:我还是觉得你不会留在**城市。(此时楼主已炸毛)答:您为什么觉得我一定会因为在***城市,才会选择中兴,不会因为中兴,选择留在***城市(那时年轻气盛哈?)
中兴面试就此结束,卒。
经验:如果真的想要这个offer,即便面试官再***。也要忍。
7月14日 字节跳动(一面凉)
我真的不知道自己哪里来的勇气,在没刷任何题,没有被任何面经,没有做任何准备,只参加过一次面试的情况下,去面字节?
一面(技术面):
自我介绍
java中的锁
乐观锁和悲观锁
(其它一些java基础问题)
CAS原理
leetcode41题(第一个丢失的正数)面试官给了n多提示,还是做不出来,最后面试官直接说了一句,今天就到这里吧,结束…
8月5日 顺丰(一面凉)
一面(技术面)
自我介绍,主要介绍一下你在学校做的项目
作为项目组长是如何管理你的小组的
如何控制时间进度
遇到最大的问题是什么
CAS解释一下
根据身边同学的情况来看,顺丰的面试不算难,我比较水
8月10日 深信服(offer)
8月13日 依图科技(一面凉)
一面:
1、自我介绍
2、了解什么数据结构,详细说一下hashmap吧,hashmap的默认数组长度是多少,hashmap中的取余操作是怎么做的
16
3、LinkedList和ArrayList的区别
4、给出5个数字,要组成四位数,最多有多少种
5、乐观锁和悲观锁
6、为什么使用乐观锁,有点在哪里
7、说一下JVM的垃圾回收机制
8、JVM如何避免下一个整堆回收
9、三次握手四次挥手
9月3日 老虎证券(一面凉)
老虎的面试体验并不是很好,但是记不太清了,只记得前面聊了一些基础,聊的怎么样不记得了,后面问有没有实习,能不能实习,楼主没有实习经历也没办法去实习,然后又问了毕业时间,我说是20年7月,然后就……他说建议我多实习一下,然后就没了,具体问题当时没记录,现在也不记得了。
9月5日 流利说(一面凉)
一面是电话面,我是java岗,由于公司是go的技术栈,感觉可能那个面试官以前也不是太多了解java,所以主要问一些操作系统的问题,我这部分掌握的不好,所以凉凉。
9月11日 富途(offer)
一面(技术面):
1、自我介绍
2、介绍了解的数据结构
3、计算机网络的常见问题
4、数据库索引
5、垃圾回收机制
6、垃圾回收机制,关于JVM调优知道哪些
7、知道哪些设计模式
8、未来职业规划
二面(技术面):
二面实在记不住了?就是堆面试官影响特别深刻,但是问的问题真的记不住了
三面(HR面):
常规问题,家在哪里,是不是独生子女,家人怎么看待工作问题,有没有男朋友等等。
富途是我第一家技术面能扛到二面的公司也拿到了offer,也是给到了我很多希望和信心,虽然最终可能没办法签约,但是很感恩。这真的是一家小而美的公司。
9月12日 映客(offer)
一面(技术面):
1、为什么做安卓
2、JVM垃圾回收机制
3、堆和栈的区别
4、25个人赛跑,5条跑道,找出top3,最少跑几次
5、java中的锁机制
6、数据结构了解多少
二面(技术面):
全程没有再问任何技术问题,单纯的撕论文,每篇论文的思想,实现,以及能用到哪里,问的很细,虽然我们可能不是一个领域,但能感觉到面试官问的问题是听懂了我的思想,并思考过后问的。
三面(HR面):
常规问题,兴趣爱好,期望薪资等等
9月17日 美团(口头offer)
一面(技术面):
1、自我介绍
2、***项目的功能结构,画出功能结构图,详细说说***功能是怎么实现的?
3、倒序数组找出最大值
4、JVM垃圾回收机制
5、ArrayList和LinkedList的区别
6、HashMap为什么是非线程安全的
存在好几步分开的操作,在多线程情况下容易出错
7、又详细问了问项目
面了挺久的,因为是在外地面的,又是一次性面完,所以当时没有记录,现在记不清当时问了什么问题了
二面(技术面):
两个算法题,我只记得一个了,是一个数字的二进制中1的个数,另一个怎么也想不起来了
MySQL的底层是什么
想不起来了,那天很累,记不清了
三面(HR面):
常见问题……
9月20日 陌陌
这家公司不知道怎么评价,总过十多个岗位,就只要100多个人,然后宣讲有将近市场,算一下基本每个学校每个岗位要两个不到吧,可是现场面那天,占了学校很大的一个大厅……笔试放了很多人去面应该
一面(技术面):
1、自我介绍
2、写一下读锁和写锁:这里必须说楼主太水了,这个问题触到盲区了,第一反应,让我写java里的读锁和写锁,重新实现?就很蒙蔽
这道题不会,面试结束
更玄学的是,大概过了两三天,突然接到了一个电话,说是陌陌的,看到了我的笔试卷,问我现在能不能面试,于是,面试就开始了,那天问的问题没有任何难度,只有最后一个智力题,是评估某个地区的井盖的数量,我一开始想,只有马路上有,就说算马路长度,然后估算多远一个,求平均值,然后面试官一直说不对,拖了很长时间,最后说,应该算总面积,看多少面积内有一个井盖……个人觉得这个思路和我的没差吧,只是他考虑的是草坪里也有井盖。好吧,是楼主生活里经验不够丰富。后边这家公司就再没消息了……很玄学,个人觉得是在刷KPI,100个人,10个岗位,跑了快十个学校还没招满?还有突如其来的电话面,估计是刷kpi吧,不过也希望是我小肚鸡肠了。
9月20日 云集(没有接offer)
一面(技术面):
1、说一下HashMap
2、说一下ArrayListhe LinkedList的区别
3、说一下对于Redis的应用
4、说一下堆数据库的理解
5、你还懂得JVM调优?你用过嘛?
二面(技术面):
深挖项目,问在每一个项目里做到具体工作,以及时间关系的处理
三面(HR面):
常规问题,家在哪里,男朋友,期望薪资这些
9月22日 度小满金融(一面凉)
一面(技术面):
1、框架懂不懂?(答:会用,没看过源码)
2、说一下你对MyBatis的理解
3、说一下你对Spring的理解
4、说一下你对高并发的理解
5、你会啥?
好吧,楼主太水了,会的基本就是基础,写写算法,做做智力题,说说java基础还可以,这种实操性特别强的,楼主确实太水了,做不来。
9月22日 海康威视(一面凉)
1、Spring中的Bean要配几个参数
2、final的含义
不可修改
3、写一个外连接的sql
4、画一下servlet的底层
5、你写了解的这些就是不会吧?那我不问了?(这句话楼主已经蒙蔽了,前面也没答的很糟糕,突然来了一句,原谅楼主始终觉得自己太水,实在不敢写精通,而且当时已经拿了一些offer也没想再舔他,觉得这个人很没礼貌)
6、你有什么要问的嘛?(答:没有)
7、你对你想入职的公司没什么要问的吗?(答:了解了)
楼主可能还是脾气不太好,现在想想挺后悔的,不管怎么样,对方也是面试官,应该尊重。
9月24日 去哪儿网(没接offer)
面试问题完全没什么记忆了,不知道为什么,一点记忆都没有了,但是没接offer是因为薪资太低了,楼主第一次谈薪资,问楼主要多少,楼主很诚实的说了心中的最低价,但是hr说我们给到你的是那个价减一,楼主想了想,觉得实在有点接受不了,就拒绝了,后边也不再想谈了,就拒绝了。
9月25日 华为(offer)
一面(技术面):
1、自我介绍
2、详细问了我的论文,并且和我讨论了论文再实际落地中的使用,这部分必须承认受益匪浅
3、手写单例,几种不同的方式
4、变量命名方式及编码习惯
二面(技术面):
1、java常见的问题
2、手写字符串的消消乐
3、手写一个嵌套的多表查询sql
4、问了成绩
三面(主管面):
没有再问技术问题,主要聊论文的实验,撰写,发表过程,聊项目管理过程中的问题,聊人生……
华为是很喜欢的一家公司了,最后没去也是因为自己的评级太低了,感觉有点难以接受
9月25日 BIGO
一面(技术面):
实在记不住了,一点记忆都没有了?
二面(技术面):
1、介绍一下你的第一篇论文
2、像介绍第一篇论文一样介绍一下你的第二篇论文
3、数据结构学过吗?说一下你了解的数据结构
4、计算机网络学过吗?说一下你了解的知识
5、汇编原理学过吗?汇编过程还是什么,这个楼主不会,也没记住
6、操作系统学过吗?说一下你的了解
7、数据库你用的是什么?说一下索引
8、说一下垃圾回收机制
三面(技术面):
说一下你的论文,大概聊了半个小时lun'wen
10月10日 新浪微博
面试体验不是特别好……不具体描述 了
10月15日 WPS
WPS的没有java的技术栈,面试官也不懂java,所以问的比较笼统
一面(技术面):
1、说一下MySQL的相关知识
2、说一下你知道的网络的相关知识
3、高并发场景下出了问题怎么解决
二面(技术面):
1、介绍一下你的论文,他是如何应用到推荐里边的
2、你对转语言有没有排斥
3、项目管理过程中的一些问题
……基本没有问特别专业的问题
10月17日 58集团
一面(技术面):
1、LinkedList和ArrayList的区别
2、数据库索引
3、项目中***是怎么实现的
二面(技术面):
就一个问题……搜索引擎的底层数据结构是什么
1.四道算法选一道:A.链表对称翻转 B.找出无序数组中加起来和为某个target的连续子序列 C.出租车在一条公路上走,有好几个红绿灯,某个时间出发,最快多久能到达终点 D.记不清了,类似笔试题
————————
1.介绍项目,对着项目问:分布式,一致性哈希,缓存,服务器请求过程等
2.做题:两个数组,在B数组中查找第一个大于A数组里中位数的数字
3.数据库语句,计网知识,Java多线程相关知识,Java基本类型和类之间拆箱装箱关系
1.JVM基础知识一箩筐
2.Java并发编程知识一箩筐
3.项目介绍
4.做题:一个矩阵,从左上角查找最长的一条路径,(路径要求:和下一个方格(前后左右都行)的差不超过1,如果到尽头则直接输出),输出出来。
1.发起Http请求涉及哪些协议
TCP,UDP
2.TCP,UDP区别
TCP面向连接的字节流
UDP 不面向连接,数据报文
3.面向报文面向连接
4.哈希表的有序怎么保证
5.redis数据类型,zset讲一下
6.HashMap原理,线程安全问题,ConcurrentHashMap原理,Hashtable
7.Synchronized
8.MySQL索引原理,为什么用B+树不用B树
9.红黑树
10.TCP四次分手原理
11.如何实现可靠的UDP
12.tcp无状态
13.cookie,session,密码设置过期时间并确保安全性,怎么用sessionID和cookie确保
14.http和https,ssl加密解密原理
15.优先级队列
16.设置一个id生成器 唯一且不可以递增
17.数据库隔离级别
18.可重复度怎么实现的 然后给出了一道InnoDB可重复读级别的题
写的部分:
1.循环递增数组输出最小值的下标
2.查找第一个缺失的正整数
3.复杂链表的复制
4.对2000万高考考生总分进行排序
5.给定m个不重复的字符 [a, b, c, d],以及一个长度为n的字符串tbcacbdata,问能否在这个字符串中找到一个长度为m的连续子串,使得这个子串刚好由上面m个字符组成,顺序无所谓,
返回任意满足条件的一个子串的起始位置,未找到返回-1。比如上面这个例子,acbd,3。
6.二叉树的蛇形遍历
7.MySQL查询男性平均年龄最大的城市,给了id,name,sex,city,写语句并设计索引
8.AB赌博,A赢2局或以上获胜,B赢3局或以上获胜,求A,B获胜概率
9.不公平硬币,有没有正反面概率相等的时候
大概就记得这些了。。。然后祝愿大家顺利上岸!