阿里、百度、腾讯Java程序员面经(附带面试题答案)

腾讯整理最常见的78道面试题试必备(含答案 这78道面试题腾讯试官这三年试时问的比较多的面试题,在这里分享给大家,希望都能顺利通过试,拿下高薪。赶紧拿去吧~~文末有答案领取方式! 78道高频面试题: Q1、什么是兼容性测试?兼容性测试侧重哪些方? Q2、我现在有个程序,发现在 Windows 上运行得很慢,怎么判别是程序存在问 题还是软硬件系统存在问题? Q3、测试的策略有哪些? Q4、正交表测试用例设计方法的特点是什么? Q5、描述使用 bugzilla 缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程? Q6、你觉得 bugzilla 阅读详情

一定不要在没有面试经验的情况下先面大厂,或者是你想去的公司。

我是3月1日下午三点半在阿里的官网完善的简历,5点电话就过来了。作为一个java coder,阿里是个很好的平台,(当然C 的岗可以好好准备腾讯),一定还是准备充分了再投,你先面的结果很可能是焦急地等一两个月然后被后来准备充分再来面试的人取代。

阿里 3.1,3.2(两面)

两天各面了一面(投的蚂蚁金服,第一天面的就不太好,第二天又把我捞起来面,并且面完感觉就走远了,但当时却没有reject,这就导致之后一个月一直在流程中,阿里其他事业部的师兄师姐没办法把我的简历提走,最终到要笔试了然后变成了rejected)

那个时候就是处于我所说的无知状态,知识点掌握的不够牢,简历写的乱七八糟,面试经验为零(这应该是我上学以来的第一次面试),面试技巧就更不懂了。

然后当时两次都感觉聊得很差(尤其是聊算法模型的时候都想自爆了),也根本没有记录面经的想法。所以有些问题我都记不起来了,大概说一下吧。

  • hashMap的扩容原理,初始有13个,要怎么new?(达到了负载因子,直接手动>>1)

  • Integer的常量缓存池的问题(-127~128范围有个cache)

  • ConcurrentHashMap的size()怎么做的(并没有完全加锁,而是先乐观的认为不会有写,通过modCount判断是否更改,这个我当时记不清就用了很多可能、大概、应该这种词,事实证明直接说不清楚会更好)

  • Spring的AOP关于拦截private方法一些问题.(细节忘记了,当时答得也不好)

  • 项目中数据字典怎么做的缓存,如何做的通信,有没有用什么模块。(说了自己的做法,用的全局的HashMap,然后他会延伸到高并发的场景,分布式缓存怎么做等等,由于没实际操作经验提前也没准备,并且还没有直接说不会,又是用很多模棱两可的语句答得)

  • 讲讲你的论文相关的模型吧(这个其实在简历上根本没写,只是写了数学建模的奖,然后面试官就开始问机器学习的算法,很多都是我没准备的,并且我心想我投的也不是算法岗啊。。。所以说对于简历上的每一条一定要熟悉,做足准备,并且遇到简历上没有都扯到的方面,要想办法转移,不要在这耗着)

  • 讲完算法的问题,面试官很尴尬的说了句,你这自己的研究方向你都搞不清楚吗?我当时预感就差不多走远了。。。

其他问题真的太久远了,我当时也没有记面经的习惯,所以就没有了。但是最大的感受是面阿里的时候整个人都是紧张的状态,语速特别快,恨不得把知道的都说出来,没有条理,并且把自己姿态放得特别低,还在楼道不停走来走去。(对,以上说的这几点全都是不应该的,但主要原因还是当时准备太不充分,简历方面的准备以及知识点的积累都不够;另外一点,还是要强调不会的就是不会,千万别说大概是,我觉得吧这种东西,说的不好很容易让面试官认作不懂装懂,虽然你只是很想向面试官表达点什么,哪怕只是积极的态度)

从阿里面完试开始我的心态基本上就崩掉了,对自己极度怀疑,加上今年诸事不顺,心情直接跌到了低谷。然后整个三月基本上都是黑暗的,整个一个月都没再投内推,每天从早晨起来,大多时间就在看书刷题,晚上十点回宿舍躺在床上,还要刷两个小时牛客的面经。一个月下来很少说话,提升肯定是有,但是这个过程,其实完全可以用更好的心态去经历。

然后这段极其黑暗痛苦的日子持续到三月底,一个师兄想帮我内推百度,因为之前因为没信心也错过了腾讯的内推,就心想要不试一下吧。

百度(123面)

一面 3.30 下午两点 45mins

  • 自我介绍,印象最深最费心的项目(这个一套可以提前准备,在某些亮点可以估计抛出等面试官来问)

  • 讲讲项目中的爬虫和优化怎么做的,为什么选用jsoup而没有用python的urllib

  • 说说你了解的反爬虫措施,和针对异常的处理。

  • 那你觉的你来做一个网站要从哪些方面考虑反爬虫。

    这里可以提前和学习,即使你真正使用的只是一点,也可以在相关问题上做更深的了解。

    最简单只分析请求,拦截所有非浏览器的直接请求(可以通过添加伪报头解决);查看refer页做防盗链接(可以改refer项);基于用户行为的策略,同一ip相似请求判定(代理或ip池,或间隔请求解决);基于用户session的策略(模拟多用户登录解决);封装前端数据,用js渲染生成(通过探取和模拟异步ajax请求解决);对ajax请求进行加密等等方法。

  • 讲讲项目中怎么实现的充值,锁的机制和事务注解,如何保证了事务的一致性。

  • spring层面做事务和数据库层面做的区别,各自实现方式。

  • 聊了事务的传播性和隔离级别,问了mysql的默认隔离级别(可重复读)

  • spring中事务传播性怎么配置(xml方式和注解方式,还有关于savepoint的使用)

  • 算法:O(1)删除执行链表结点,做分析(其实是要指出剑指offer中那个直接copy值的方法的缺陷和隐患)

  • 算法:二叉树的最长距离(递归的思想)

二面 3.30 下午五点 50mins

  • 聊项目(这次是针对项目中的加密算法和安全性做了阐述,大概20分钟吧,之前爬虫那个例子已经说了项目亮点要怎么准备了,这里我就不多说了)

  • 详细聊了聊spring的IOC和AOP思想

  • 关于AOP在spring的应用(比如事务,通知,aspectJ,slf4j的原理,和log4j的对比)

  • 关于jdk代理和cglib第三方代理(说出对接口代理和子类继承的区别)

  • 用的什么数据库,Mysql。

  • 最大的数据量多大,用了索引没有,怎么用的(聊了前缀索引,对于varchar类型的值,又聊了聊char,varchar,text,blob的关系和区别)。

  • 为什么索引不能随便用,什么时候用(什么时候失效,什么时候最高效)。

  • 如何达到索引开销和性能的平衡,用了一个表去举例。(方法就是,根据情境看经常做的查询是哪些,然后依次是什么查询条件,保证最高效索引的同时,也保证索引不失效,避免无效开销,并且根据show profile和explain功能进行对比分析)

  • 数据库用了缓存没有,讲讲redis的理解(用作缓存,队列,也可做存储)。

  • redis是单线程还是多线程的,举个例子(做计数器,rank排行榜)

  • 讲讲hbase的原理,CloumnFamily包含哪些,region什么情况做分割,对于版本号这个第四维度的使用方式(一般默认三个版本)等等

  • 让我等消息,说经理会联系我。

经理面 4.12 中午 40mins

  • 经理面其实更加放松,不只是技术方面,还有生活,性格多方面,感觉是个技术 hr的综合面。

  • 聊家庭,家乡,工作意愿,爱好等等(聊了十几分钟,感觉都很不错,然后之后的面试也就很轻松了,基本是我在讲他在听)

  • 讲了讲项目的设计,包括异常的处理,数据库设计,通信模型的设计。

  • 讲讲你理解的JVM吧(从内存划分说到了GC算法、分代思想,CMS和G1 collector,到类加载模型,tomcat的非双亲委派、线程上下文加载器,到JVM调优的策略,gc参数设置策略,如何找死锁,读快照,发现内存泄漏等等吧)

  • 然后说了下部门的技术栈和部门介绍,说了部门可能没有留用的hc,问我介不介意(当时还没offer当然说不介意只是希望去学习)

  • 然后就说把我简历锁了,之后会给我发offer。

其实到现在我都很感谢百度,虽然最后因为部门和留用hc的原因没有去,但是这次面试收获最大的就是信心。并且经理电话里就给了口头offer,这个让我悬了一个多月的心一下子就放下来了,接下来的几天乃至之后的面试整个人都是放松的状态。(真的很难形容,这种转变就在这一个电话的前后)

所以,其实大家也早晚会有这一天,没必要一直那么紧张的状态,太痛苦了。(虽然我知道这种话说得简单),另外一点就是三月份确实有了很大的提高,这个告诉我们,该逼自己的时候还是要狠心一点。

360(123面)

有了信心或者说有一个offer之后,你就会越来越顺利,从这之后的每次面试都会有不同程度的收获。360的流程是走得最顺利的,笔试 面试,三次面试一天完成,但是360的面经可能写得稍微简单一点,因为很多知识点在后面的面试中也出现了,就没有做过多解释,腾讯滴滴美团的面经要详细一些。

360一面 4.12

  • 自我介绍加项目

  • 线程池如何优化的爬虫,数据规模

  • 网络时延如何处理

  • 同名影片如何选取,有没有更好的方式。

  • 反爬虫的原理,从低级到高级说一下,分别如何应对

  • 收获了什么

  • 线程进程区别

  • 说下资源方面的区别,共享,不共享

  • 共享的具体哪些资源

  • jvm内存模型

  • 堆区的特点

  • 数据库左连接右连接,场景

  • 给200个200个数的数组,找到最大的200个

  • git 常用的操作,git rebase和git merge区别

  • 分布式数据库怎么调用

  • linux常用命令,查看内存,查看磁盘使用率

360二面 4.12

  • 聊项目,介绍下背景,怎么谈的

  • 印象最深的模块及解决,其他项目呢,跟着老师做的,还有简历上没写的项目

  • 项目经验还可以那基础怎么样自己觉得,

  • 说下jvm吧你知道的,中间会问

  • jvm详细如下

  • 内存模型

  • 垃圾回收

  • 分代及回收算法

  • 哪些作为gc root

  • 收集器的特点分类

  • 类加载机制和双亲委派模型

  • 几个加载器

  • tomcat类加载有什么不同,说加载顺序并不是双亲模型,具体顺序说一下

  • 并发注意什么,线程实现同步的方式,通信

  • 几种同步的区别

  • 悲观锁乐观锁,底层怎么实现的,越详细越好

  • 单例模式的特点,几种实现,容易引发的问题

  • 如何防止内存泄露,哪些会容易造成

  • jvm调优如何检查内存泄露,如何优化gc参数

  • 写sql 查询带日期多次考试成绩表中,每个学生的每门课最高成绩,日期要准确

  • 分别用having子句写和用子查询写

  • 写代码 旋转数组中查找某一个值

360 三面 hr 4.12

这是唯一一篇hr面经,因为我只面过这一次hr,其他的三面要么是技术,要么只是打个电话说说情况,还没问问题就挂了电话(比如腾讯的)。

  • 讲一下项目怎么接的,怎么跟甲方沟通,遇到的最大问题,怎么克服的

  • 自己的项目和老师的项目和安排怎么协调。

  • 平时有什么爱好,怎么安排自己的时间

  • 摄影都去哪拍,喜欢什么运动,什么时候运动

  • 为什么选我们部门,其他部门你怎么看

  • 我们是做移动端后台的,喜欢玩手机吗

  • 说说常用的app平时怎么用,频率

  • 以后会不会创业,为什么

  • 以后的规划,职业技术和生活两方面

hr面没有太多经验,个人生活爱好这类我感觉就是放轻松聊,规划方向这些可以自己提前准备准备,但是比如创业,offer(之前说过了),价值观一类的问题,其实你也不知道对方想要什么样的回答,干脆随缘吧。

腾讯 (12面)

腾讯的面试有一点印象很深,很考察思维能力,经常会有一些意想不到的问题,或者智力题。挺有意思。

一面 4.23

  • 上来看了我的简历问我会不会C ,我心想虽然学过,但是好几年不写,还是说不会吧,然后面试官很好,就不问了。

  • hashmap底层结构画一下,手写代码做一个url解析器,用正则方式和hashMap的数据结构。

  • 识别2的n次方,写个函数。(最快的是用位操作,大家应该都知道n&(n-1)可以去掉二进制最右的1,那2的n次幂&之后便为0)

  • 自己实现http response响应头的结构及解析,用buffer(写个伪代码)

  • resp头中都有什么(主要考察http相关知识)

  • 海量数据找到出现次数最多的100个(内存不足的时候可以先做hash分片,最后多路merge,每次操作可以用hashMap计数,也可以自己做hash函数计数)

  • redis底层实现,zset数据结构(问到了SkipList跳表这种结构)

  • jvm内存模型,分代,cpu100% 怎么排查(我以为问Jconsole的使用,其实是想问linux性能监测和调优)

  • 用int值表示ip如何做(刚好32位bit一对一映射),写个伪代码做transfer

  • nio模型说一下

  • selector中的wakeup什么含义(这个答得不是很好)

  • select poll epoll (linux内核相关的知识)

  • arraylist.sort怎么实现的(这个可以看看TimSort的思想)

  • 怎么看待java跟c (说下区别和自己的感受)

  • 能实习多久(这个好说)

  • 去深圳工作怎么看(这个真没想过,不过当时说也可以吧)

  • 有女朋友吗(...)

二面 4.24

二面其实就两个大问题,但一直往很深的地方问。

  • 100亿个数找最大1000个(说了分片,用堆,再归并)

  • 问你确定吗?(我一想是最大的1000个不是出现次数最多的,其实是可以顺序读取,还是用堆实现)

  • 有什么缺点,分布不均匀(说一下堆的复杂度由来)

  • 有没有其他思路(用hash散列,计数排序)

  • 这个更慢,还有更快的吗(我心想我平时就都是答得堆啊,怎么这次还有更快的?)

  • 然后讲了基于partition的划分思想(找到第k个开始partition,在左边就在右面递归,在右面就在左边递归,最后确定partition出最大的k个)

  • 这种思想了解了,但最坏情况太差,不稳定,还有更快的吗

  • 是不是要用概率统计学,抽样估计?

  • 说下思想。。

  • 不够精确,还有又精确又稳定的吗?

  • 。。。

  • 那又给你一个数,你怎么快速告诉我是不是在这100亿个数中?

  • 这个我知道有可能是想问Bloom Filter,但是具体到hash函数去几个怎么算,怎么判断误差等细节,我也记不太清了,就说了说思想。

然后进入第二个问题:

  • 一个进程最多申请多大空间(看机器cpu的处理位数看情况)‘

  • 怎么保证进程间数据的安全?线程呢?

  • 安全方面有没有做过一些研究?

  • 登录验证怎么做的,为什么用md5,有没有改进( salt使md5库难解出),微信用的什么方式你知道吗?你想想应该用什么方式?(这里可能是问SSO单点登录的原理吧,可以讲讲SSO JWT token等技术的原理,这个也是我实习之后了解到的,当时答得一般)

  • 那说到通信安全,怎么保证http的安全性,幂等性,回调同一个会话怎么标识不同请求,不同会话怎么区分(这个每个问题都画图叙述了下)

  • TCP 3次握手和timewait讲一下原理

  • 讲一下滑动窗口,饱和了怎么处理

  • http安全吗?https说一下?

  • get和post请求

  • linux怎么查看网络状态(vmstat)

  • 查看udp的性能,udp端口多少,什么时候用udp?

  • 为什么tcp不行?

  • qq里哪些用的tcp哪些用udp?分别针对每种情况说一下为什么?

可以看到腾讯还是很爱问网络通信、大数据处理的(当然C、C 也很爱问,只不过我说了别问,他们就真没问,当然你做java的也不要期望他们会问你多少java问题)

然后当时并没有hr面,我心想应该是挂了,但是微信的状态又迟迟没挂,结果到了一个月之后五月底我都回家准备入职了(绝对又是补招的备胎),然后打电话问问个人情况(也没说是不是准备给offer),问可不可以去深圳,转C 方向。

当时也有比较好的机会了,并且实习转岗,如果不确定能留下,绝对是不建议做的一件事,所以就实话实说了。

滴滴新锐(123面)

一面 5.12

  • 说说你对现有Web开发框架的理解(从各个层入手横向对比优缺点,印象中说了SpringMVC和Struts,mybatis和hibernate及jpa)

  • mybatis和hibernate各自的缓存原理和比较,hibernate的一级二级和查询缓存,还有针对缓存的miss率,置换策略,容量设置和性能的平衡问了自己的理解。

  • 要你设计的话,如何实现一个线程池(就讲线程池的原理,从初始线程数,核心线程数,然后到任务队列,满了继续到最大线程数,再满了到饱和策略handler,饱和策略一般有哪几种,基本上要理解ThreadPoolExcuter的构造方法那几个参数)

  • synchronized关键字,实现原理(和Lock对比着说,说到各自的优缺点,synchronized从最初性能差到jdk高版本后的锁膨胀机制,大大提高性能,再说底层实现,Lock的乐观锁机制,通过AQS队列同步器,调用了unsafe的CAS操作,CAS函数的参数及意义;同时可以说说synchronized底层原理,jvm层的moniter监视器,对于方法级和代码块级,互斥原理的不同, 1-1可重入的原理等)

  • 算法:手写一个ArrayList类,实现add,remove,等基本的方法(主要考扩容的原理和实现,重点写出扩容机制以及扩容时的copy过程)

  • 然后让对这个ArrayList进行改进,使之可以应对并发的场景

  • 算法:手写字符串的正则匹配,实现*和.的功能,用的递归(写了一半他说时间差不多了,思想大概了解了)。

二面 5.12

  • 说说你认为项目中技术最薄弱的一个地方(答了IO网络监控和通信模块,短连接性能太差)

  • 举例说说在什么情况下会出现性能瓶颈,如何优化(答了用NIO的方式)

  • NIO的原理,jdk中有哪些工具和类去实现,如何实现(selector和channel的用法),真的好用吗?还可以用什么?(面试官应该是想问netty,因为没有实际用过,只能给他讲了netty的原理)

  • 那来说说AIO吧,和NIO什么区别(对异步的理解),AIO在工程中如何实现的?(大概说了下ajax的回调函数),又问回调函数具体是怎么实现的(传递函数指针)。

  • 然后借着异步IO想问消息队列,讲了一下几种模型和原理。(面试中没有用过没关系,只要你懂原理还是可以跟面试官讲,起码可以证明你是爱学习的)

  • 项目中非技术上的困难(和甲方沟通需求,没有规范化的项目设计,需求变更太频繁等),问了我解决的方法还有以后希望怎么改进。(变相问互联网公司里面各个team以及需求方是如何合作和分工的)

  • 讲讲Spring中怎么对初始化的bean做其他操作。(这里有三种方式,@PostConstruct注解方式,init-method的XML配置方式,InitializingBean接口方式)

  • 三种实现上有什么区别(还好看过点源码,其实前两种是一个意思,都是通过反射的方式用aop思想实现,可以消除对spring的依赖;接口方式是直接调用afterPropertiesSet方法,效率更高点。spring加载bean时先判断接口方式,再执行配置注解方式)

  • 算法题,一个先减后增的数组,查找目标值。(这里并不是查找最值,也不是剑指offer上的旋转数组,但是思想上也可以用二分的方式)

  • 算法题,两个大数求和,要按高到低位的输入,实时输出结果的对应位,空间O,时间O(n),不借助工具类。(要考虑实时的进位标识,以及多个9之后的连续进位标识)

两面完了电话让去参加新锐的现场终面,很有诚意地报销了所有的花销。新锐的三面还是有难度,基本上围着算法在问。

三面 5.12

  • 算法:int范围的随机数的阶乘编码实现。

    (这个题如果直接按最简单的算法题肯定是不行的)

    1.首先考虑要用字符串做运算(因为中间数太大了,只有String能保存,当然你可以借助BigInteger或BigDecimal类去辅助实现)。

    2.阶乘直接计算代价太大,循环太多,考虑设计中间缓存。(正常算复杂度太高,本身就是阶乘级的,所以正常想到用时间换空间)

    3.只用空间换时间的话缓存也不能覆盖全部,如果把所有的中间值保存,空间是eb级别,不现实。(这里就要达到一个空间和时间复杂度的平衡点)

    4.存部分中间值用部分空间换取时间,达到空间复杂度和时间复杂度的最优平衡。(开始说的二分做分割存储之后改为等间隔做分隔存储,间隔选取多长为好?我觉得要首先确定空间复杂度的接受极限,然后尽可能减小时间复杂度,因为空间复杂度是可以有预估值的,而时间复杂度当然我们是希望约小越好的)

(这里说一下,我并不是一开始都想到了,只是面试官一直在提示我思路,给我时间思考,没有否定过我)

  • 因为头一次手写白板,返回类型有错误,面试官说你这个编译器会提示什么?

  • 又问了异常体系,checked unchecked虚拟机原理怎么做。

  • 解释下iaas.paas.saas和之间的关系,外呼接口和服务怎么调用的。

  • 数据库主从备和读写分离原理,ibatis怎么配置。(这个只讲了数据库层面的原理,比如监听线程,主机和从机的同步方式等,但是具体代码层面的配置,由于没亲自做过,就说不太知道。)

  • 算法,股票最长增长区间,优化

  • 算法,最长递增子序列,一个dp数组一个max数组,最优情况

ps:这个面试官应该是面试过程中遇到最nice的一个,也是我现在的老大。其实面试除了自身的因素也有面试官的因素,一个好的面试官不会随便地否定和质疑你(当然有专门压力面的),而是可以让你在放松的环境下,挖掘你真正对于一个方面的深度和理解。最后的十几分钟他并没有问我问题,只是在跟我聊天,他跟我说不管是哪个公司,真正的发展还是跟部门的方向和氛围有关系,选择的时候不要只看公司,做的业务部门方向和leader才是该去了解和考虑的。作为应届生很多时候不那么了解,这就要靠我们(指面试官)多去了解你想发展的方向。然后聊了很多成长路径和规划的事。

真正实习到现在一个多月,深深觉得面试就是面试,很多知识和题目都是可以准备的,而工作中面对各种情况解决问题的能力和方式才是更重要的。为了面试准备了很多,工作了发现要学的东西更多,我们真的还有很长的路要走。

美团(123面)

1面 1hour 5.26

  • java基础,从头到尾问了个遍,都是大家准备的,但是也挺深的,包括:

  • hashMap,红黑树处理冲突,jdk7和jdk8有什么区别

  • JUC相关的集合,ConcurrentHashMap jdk7和jdk8的区别,Collections.sort函数jdk7 和 jdk8 分别怎么实现的。(总感觉这个面试官在某段时间肯定纠结过两个版本)

  • CopyOnWriteList底层是什么,适用的情况,vector的特点,实现的是List接口吗。

  • 并发的问题,线程间通信三种方式

  • 锁的膨胀过程,Synchronized和Lock的区别,底层的monitor实现和unsafe类的CAS函数,参数表示什么,寄存器cpu如何做)

  • volatile cpu和寄存器层面是怎么实现的。

  • 线程池构造函数参数,各种类型的预设池各自的特点,ForkJoinPool是怎么实现的,多线程等等问了一个遍。

  • 为什么匿名内部类的变量必须用final修饰,编译器为什么要这么做,否则会出现什么问题

    数据库:

  • 索引的分类。

  • 主键索引和普通索引的区别,组合索引怎么用会失效。

  • 索引的前缀匹配的原理,从B树的结构上具体分析一下。

  • 聚集索引在底层怎么实现的,数据和关键字是怎么存的。

  • 组合索引和唯一性索引在底层实现上的区别(这个是整个一面感觉答得不好的一个问题,不太明白面试官想问啥)

  • sql的优化策略,慢查询日志怎么操作,参数含义。

  • explain 每个列代表什么含义(关于优化级别 ref 和 all,什么时候应该用到index却没用到,关于extra列出现了usetempory 和 filesort分别的原因和如何着手优化等)

  • show profile 怎么使用。

2面 1hour 5.27 (因为这一面问得很深,所以到现在都记得很清楚)

  • 一个url到页面全过程(让我能说多详细说多详细,最好从OSI七层的每一层去扩展)

  • http的请求头格式(这个真的记不太清了,只说了几个有印象的标志位)

  • getpost区别,post可不可以用url的方式传参。

  • 说到了url有最大长度,就问长度有限制是get的原因还是url的原因,为什么长度会有限制,是http数据包的头的字段原因还是内容字段的原因,详细说明。(在他一步步追问下答了个差不多)

  • 关于幂等性的详细介绍。

  • 幂等性是http层面的问题吗,还是服务器要处理和解决的内容。(就是看你对幂等性的定性是怎么理解的)

  • 后台服务器对于一个请求是如何做负载均衡的,有哪些策略,会出现什么样的问题,怎么解决。(说了一致性hash算法,分布式hash的特性,具体的应用场景,又非要问我知不知道这个最早在哪个公司使用的...我说这个真不知道。好像是amazon?)

  • 说说http的缺点,无状态,明文传输。

  • 那https是怎么做的,如何实现的?ca认证机构。

  • 然后问我https ssl tcp三者关系,其中哪些用到了对称加密,哪些用到了非对称加密,非对称加密密钥是如何实现的。(还好我项目中涉及到了一些加密)

  • 关于加密的私钥和公钥各自如何分配(客户端拿公钥,服务器拿私钥)

  • 那客户端是如何认证服务器的真实身份,详细说明一下过程,包括公钥如何申请,哪一层加密哪一层解密。

  • java的优先级队列,如果让你设计一个数据结构实现优先级队列如何做?

  • 用TreeMap复杂度太高,有没有更好的方法。

  • hash方法,但是队列不是定长的,如果改变了大小要rehash代价太大,还有什么方法?

  • 用堆实现,那每次get put复杂度是多少(lgN)

    (思想就是并不一定要按优先级排队列的所有对象,复杂度太高,但每次保证能取最大的就行,剩下的顺序不用保证,用堆调整最为合适)

  • 在线编程题:敲一个字串匹配问题,写了常规代码。问kmp的代码思想,最后问了下正则中用的改进后的BM算法。(还有个比较新奇的Sunday算法,有兴趣的同学也可以看一下)

3面 hr

  • 其实写了3面,感觉根本不算面试了,就是随便介绍了下部门,然后商量实习时间(大概补招都这样吧)。因为已经决定去滴滴新锐了,就跟她说可能暑期不能实习,然后说可以秋招再联系。

  • 另外美团这家要跟师弟师妹们说一声,投简历一定还是要选事业群的,千万不要选都喜欢,否则就算过了笔试,也会像我这样等两个月大概是补招才会联系到你。



写在最后 面试题答案:我分享在我自己的群里了:561614305

阿里、百度、腾讯Java程序员面经(附带面试题答案)

其实大家可以从这个过程中看出来,随着时间的推进,自己的知识储备和各方面的经验和能力都是上升的。

总结几句:

  • 对自己要有个定位

  • 准备永远都不嫌早不嫌多

  • 心态差了及时调整

  • 面试挂了及时总结

  • 这么多年也该逼自己一把了

一两次甚至一系列的失败并不可拍,成功之后反而没有失败总结得透彻,收获的多。失败的经历会让你不断提升能力,成功的经历会让你不断提升信心。而不管成功失败都会提升你的经验,都会有收获。

所以不要害怕失败,因为早晚会成功。

愿大家都能拥有满意的结局。

 

大厂真实Java面试题合集附答案腾讯阿里、字节跳动、百度、美团) 试真题-按知识点划分 Java语法基础试专题及答案:pdf Java集合_试专题及答案.pdf 并发编程 并发编程及答案() .pdf 并发编程面试题整理(答案) 并发编程试专题及答案() .pdf 并发编程试专题及答案() .pdf 并发编程试专题及答案() .pdf JVM JVM试专题及答案() .pdf JVM试专题及答案() .pdf 试必问之jvm与性能优化.pdf MySQL MySQL_试专题及答案() .pdf MySQ 阅读详情

相关推荐

2019年春招汇总,技术类校招社招千道面试题,几百份大厂经(附答案+考点)

由于篇长限制,在这里小编都是用链接来代替的,整理不易希望大家多多点赞关注,谢谢。 小伙伴们需要资料的话,下方有资料获取方式 Java千道面试题 一、JavaSE部分 二、JavaEE部分 三、JDBC编程 四、JDBC编程,计算机网络,操作系统,算法与数据结构 五,设计模式,场景题 《点击,Java学习、试;文档、视频资源免费获取》, Java经 【VIVO】vivo Java后端秋招提前批...

weixin_45235982的博客 9244

腾讯程序员笔试题及答案

腾讯程序员笔试题及答案,是进入腾讯公司的最佳选择,是想进入腾讯公司的人的必看之书

什么样的技术能进入一线大厂?这份阿里百度腾讯等 20家Java岗招聘要求梳理报告,会给你答案

目录 一、前言 二、互联网公司都分布在哪里 1. 常见大厂 2. 地理位置 三、什么样的技术能进入大厂 1. 你的简历 2. 大厂考题 3. 考点总结 四、突破成长瓶颈的技术书籍 五、总结 六、系列推荐 内容摘自:https://mp.weixin.qq.com/s/-O2Apy-llourtjQPbHyAiA 一、前言 Java学到什么程度可以找工作? 最近总看到类似这样的问题,也有一些工作3年左右的小伙伴问,该怎么进大厂。其实你说 Java 学多少可以找到工作,

Java0258的博客 992

腾讯Java高级岗180道试真题,试大厂拿offer绝对没问题

Java工程师是高薪职业,近年来互联网的高速发展下,更是一度成为抢手的热门职业,以至于投身到这个职业的人越来越多,千军万马过独木桥,想要不掉队,唯有努力学习,成为互联网公司高薪争抢的中高端Java工程师,才能不惧寒冬。如果将技术比做一棵树,每学会一门语言,就点亮树上一个果实,你会得越多,技术树的果实就越多,价值就越大。如果你能够认清自己以及自己所处的阶段,有针对性的去思考、充电,坚持做正确的事,付出比别人更多的努力,你就会比别人更加优秀,拥有更多的机会,这就是我们常说的马太效应:越努力,越幸运。

jjc4261的博客 302

成为Java顶尖程序员,先过了下问题!

一、数据结构与算法基础说一下几种常见的排序算法和分别的复杂度。用Java写一个冒泡排序算法描述一下链式存储结构。如何遍历一棵二叉树?倒排一个LinkedList。用Java写一个递归遍历目录下的所有文件。二、Java基础接口与抽象类的区别?Java中的异常有哪几类?分别怎么使用?常用的集合类有哪些?比如List如何排序?ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区

Java团长 1444

腾讯面试题—附答案

1. 1-20的两个数把和告诉A,积告诉B,A说不知道是多少, B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少? 2 爸爸,妈妈,妹妹,小强,至少两个人同一生肖的概率是多少? 3, 计算 a^b << 2 4 如何输出源文件的标题和目前执行行的行数? 5 a[3][4]哪个不能表示 a[1][1]: *(&a[0][0] 5) *...

java开发指南博客 【转载】 350

2023Java试学习网站推荐

到此,以上这些Java试学习网站都是非常好的资源,可以帮助大家提高自己的技能和知识水平,应对各种Java试问题。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力!

Wayn111的博客 1万+

2021年BATJ一线名企经总结,阿里+腾讯+百度,18个技术栈全解析!

前言 时间过得好快,2021年都过去几个月了,马上就到了金三银四的跳槽旺季,很多公司其实现在就开始招聘了,其中就不缺乏BATJ这样的一线互联网公司!相信大家对这些企业并不陌生,但是总是对试难度望而却之!今天小编就从粉丝那里拿到了2021年最新的一线名企试真包含阿里百度,网易云这些公司,由于时间关系答案小编也都为大家准备好了,大家可以一边做题一边对照自己的技术,满满的干货都给大家放在下了! 阿里巴巴 一: 自我介绍一下 介绍一下参与的项目 spring的IOC底层实现原理 Hash

欢迎您访问我的公众号【前程有光】 3883

Java面试题答案合集【真题】(腾讯阿里、字节跳动、百度、美团)

很多朋友私下跟我说今年试太难了,能不能整理一个大厂Java试合集,这样也不用到处找资料,于是我花了一年的时间陆陆续续完成了整理,这些面试题都是互联网大厂真实流出的试内容,每个问题都附带完整详细的答案,不像网上的那些资料三教九流有的甚至还没答案,这些面试题我也是经过日积月累才整理出来的精品资料。 面试题主要是针对1-5年左右的Java开发程序员提升的,不管是传统行业还是互联网行业,掌握这些技术基本都能拿到一个不错的薪资,希望对大家有所帮助。 试真题-按知识点划分 Java语法基础试专题及答案:

mt77666的博客 422

Java最新面试题答案合集(阿里腾讯、美团、字节跳动、百度

这些面试题都是互联网大厂真实流出的试内容,每个问题都附带完整详细的答案,不像网上的那些资料三教九流有的甚至还没答案,这些面试题我也是经过日积月累才整理出来的精品资料。 面试题主要是针对1-5年左右的Java开发程序员提升的,不管是传统行业还是互联网行业,掌握这些技术基本都能拿到一个不错的薪资,希望对大家有所帮助。 试真题-按知识点划分 Java语法基础试专题及答案:pdf Java集合_试专题及答案.pdf 并发编程 并发编程及答案() .pdf 并发编程面试题整理(答案) 并发编程试专题及答案

kkkllllss的博客 632

什么样的技术能进入一线大厂?这份阿里百度腾讯等 20 家 Java 岗招聘要求梳理报告,会给你答案

综上,各家公司的招聘要求,梳理出七个方向的考点,包括:基本功底、常用技术、技术深度、技术经验、学习能力、工作能力、项目经验。基本功底,是一个程序员的主科目语言的学习程度的一个基本考察,这部分内容需要平时大量积累和总结。否则一本简单的 Java 书很难全部给你讲透彻,因为 Java 中包括了太多的内容,远不止 API 使用。常用技术,这个聊的是你的技术广度,和岗位技术匹配度。比如需要用到过 RPC,那你用过 Dubbo。如果你的公司暂时用的技术不多,或者还是处于单体服务,那么需要自己补充。

m0_50180963的博客 1717

霸】10月最新184道阿里百度腾讯、头条Java面试题合集offer拿到手软!

最新2020整理收集的一线互联网公司试真题(都整理成文档),有很多干货,包含netty,spring,线程,spring cloud等详细讲解,也有详细的学习规划图,面试题整理等,我感觉在试这块讲的非常清楚:获取试资料只需:点击这里领取!!! 暗号:CSDN 阿里面试题 如何实现一个高效的单向链表逆序输出? 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位 给定一个二叉搜索树(BST),找到树中第 K 小的节点 LRU缓存机制 关于epoll和selec.

a3961401的博客 6752

阿里腾讯百度、华为、京东、搜狗和滴滴最新面试题汇集(更新篇)

前一段时间和大牛们交流了一下,据反馈现在Android岗位也没有以前那么多了,没这么好找了,临2016年寒冬季节,大量公司模仿O2O模式导致死掉企业的很多,在加之培训机构大量的培训人,导致供大于求,当然这不意味着饱和,只是市场更趋于合理一些(只要技术好不用怕的)。最近结合一些试的同学和大牛们(张旭童)反馈,前几天听童哥去阿里试顺便整理了下一些面试题目。希望对大家有所帮助,后期会不断更新添加新的面试题。可以帮大家查漏不缺。以下是(2016、2017 、阿里腾讯百度、华为、京东、搜狗和滴滴面试题汇集)

吧主 4万+

2023 年阿里腾讯百度、华为、京东、美团和滴滴最新 Java 面试题汇集

前一段时间和大牛们交流了一下,据反馈现在Java岗位也没有以前那么多了,没这么好找了,临 2022 年寒冬季节,大量公司模仿 O2O 模式导致死掉企业的很多,在加之培训机构大量的培训人,导致供大于求,当然这不意味着饱和,只是市场更趋于合理一些(只要技术好不用怕的)。最近结合一些试的同学的反馈,顺便整理了下一些面试题目。希望对大家有所帮助,后期会不断更新添加新的面试题。可以帮大家查漏不缺。以下是(2021、2022 、阿里腾讯百度、华为、京东、搜狗和滴滴面试题汇集)

m0_50180963的博客 227

百度Java面试题答案(2022最新版)

百度Java中级面试题,亲身经历,试真题,助力大家顺利拿到offer,整理这么辛苦,还请点个赞!!! 下载链接:全部面试题答案PDF 1.BeanFactory 和 ApplicationContext 有什么区别 BeanFactory 可以理解为含有 bean 集合的工厂类。BeanFactory 包含了种 bean 的定义, 以便在接收到客户端请求时将对应的 bean 实例化。 BeanFactory 还能在实例化对象的时生成协作类之间的关系。此举将 bean 自身与 bean 客户端的配置中解放

码农code之路 1642

2019年Java春招汇总,技术类校招社招千道面试题,几百份大厂经(附答案+考点)

一、JavaSE部分 二、JavaEE部分 三、JDBC编程 四、JDBC编程,计算机网络,操作系统,算法与数据结构 五,设计模式,场景题 六,Java学习、试;文档、视频资源免费获取 Java 【VIVO】vivo Java后端秋招提前批经 杭州场 https://www.nowcoder.com/discuss/198717 【VIVO】迟来的12日武汉vivo Java后台经(已凉) ...

li420520的博客 2804

新鲜出炉,百度安卓工程师社招经,文末附答案,2024年最新腾讯面试题java

还想问我遗传算法,然后看我也做了web后台,就问了为什么spring是Java后台开发主流框架,有哪些特点,我回答了向切编程aop和控制反转ioc,试官具体就问了ioc和依赖注入的一些东西,这地方我确实答得不好,就说了自己在实际应用中如何使用的。Java内存管理,主要说的是堆内存的管理,回答了新生代、老年代的区别,如何通过JVM参数对新生代过渡到老年代进行控制,GC常见算法,垃圾收集器讲了CMS,试官看我这部分理解挺好就没继续问了。首先还是自我介绍,还问了问工作经历,做过的项目,获奖经历啥的。

wfegre的博客 563
上一篇: SpringSecurity实现数据库认证
下一篇: 18 年技术老兵谈架构师之路及 Java 程序员架构学习路线
Javaesandyou
博客等级 码龄5年 733粉丝 564原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值