一、今日头条:后台开发面经
一面,比较基础
1. 自我介绍
2. 实习经历
3. HashMap
4. 堆排,建堆的时间复杂度,O(n),为什么是这个,我忘了公式怎么推的了
5. 完全二叉树和满二叉树的概念和区别
6. 数据库:事务的概念,索引,B+树讲了一下。可能我回答的太不规范,然后也说了自己忘了数据库的知识了,于是就没往下问
7. TCP 和 UDP 的区别,为什么是3次握手,4次挥手。4次挥手就是为了等待由一方还没传完,才有四次。
8. 编程题:建堆过程
9. 编程题:最小栈:在O(1)的时间复杂度内返回栈的最小元素。思路:两个栈,一个栈模拟普通的push、pop,getMin() 操作,一个栈用于存储最小值序列。
10. ArrayList和LinkedList的区别
二面:
1. JUC听过吗,java.util.concurrent的缩写。。。哭了,我说没听过,能不能不要什么都用缩写啊。。。。
2. 知道哪些垃圾回收器,CMS的优势在哪。。。哎,真的是看过就忘啊。。。。
3. 不可变类,机制,实现原理。完全不知道。
4. 红黑树的特性,面试官说红黑树不是二叉搜索树,我怀疑人生了。
5. 编程题:数组中除了两个数,其他树都出现偶数次,找出这两个只出现一次的数。二面我就答上来这一道题,哭惹
6. 编程题:二叉树转双端链表
二、前端
一面:
二面:
function a() {this.b = 3}
var c = new a();
a.prototype.b = 9;
var b = 7;
a()
console.log(b)
console.log(c.b)
17.js2
setTimeout(()=>{
setTimeout(() => {
console.log('console1');
}, 0)
console.log('console2');
setTimeout(() => {
console.log('console3');
}, 200)
})
setTimeout(() => {
console.log('console4');
}, 200);
console.log('console5')
18.算法题
给定一个字符串如下,请统计字符串中出现最多的字母和次数
三、后台开发
一面:主要问了一些网络、数据库、操作系统的题
之后开始问一些基础问题
网络:
数据库:
操作系统:
之后看简历上面有写爬虫经验,问了爬虫的很多问题,比如如何爬取需要登录账号的页面,如果爬取过程被限流怎么办等等
然后又谈了谈以前的项目,网站怎么搭建的,数据库怎么实现的,怎么操作等
二面:
二面就写了两个算法题
1.给一个字符串str,打印出这个文件夹的文件结构(参考linux命令tree)
用一个递归能写出来
2.给一个有序序列,又给了这些数字两个数字在一起的分组,调整后必须使得一个组的两个数字挨着,最少交换几次数字
这个到最后也没写出来,然后二面告诉我说也是用递归实现
三面:
(没想到我一个下午连着三面。。。)
我的三面是一个大佬。。他真的让我意识到了自己有多菜。。。。还有好多要学习。。。
四、后端
五、抖音产品运营(日常实习)
面试时间:一面业务面,大概持续了45分钟;二面是交叉面试,大概20分钟;三面HR面大概20分钟。
面试官:很和蔼、平易近人的小哥哥
面试问题:
1.自我介绍
2.谈谈你上一段的实习经历
3.说一说你上一段实习经历中从头至尾负责过的某一业务
4.你觉得在产品推广中遇到过的最大的困难是什么?你是怎么解决的?
5.针对你上一段实习中的产品谈一谈怎样选择目标用户?为什么要使用这个维度的数据?
6.对抖音的电商有何看法?
7.如果让你作为一个KOL的话,选择怎样的风格进行营销?
其他问题有些记不清了,面试官会根据你的回答进行深入的交流和讨论,所以在回答的时候也尽量要实事求是,不然会给自己挖坑。
总结下来,面试主要是针对简历的细致挖掘,你上一段实习中的经历一定要特别熟悉,包括某一数据的选择等待。
在关于解决方案类的问题的时候重点不是给出某一解决方案而是要具备相应的逻辑思维。
六、前端
一二面都是远程视频面试,在牛客网上,可以在线撸代码,面试官能实时看到, 考得比较基础,都是写过的。 一面面试官是个小姐姐,人挺好的
七、商汤一面:
八、今日头条一面:
九、盛大游戏: 1 springboot 依赖注入的方式 2 spring AOP IOC的原理 3 spring 事务 4 spring中用到哪些设计模式 4 HTTP 和HTTPS的区别 5 get 和post的区别 6 输入一个url到网站经历了哪些步骤 7 三次握手和四次挥手 8 接口和抽象类(什么时候用接口,什么时候用抽象类) 9 继承,封装,多态 10 ArrayList和Linklist的区别 11 HashMap和concurrentHashMap的区别从currentHashMap底层是用什么锁实现的(可重入锁) 12 voliate和synchronized的原理 13 多个线程如何取到一个数据 14 JVM内存模型 15 GC-ROOT 16 新生代和老年代的回收算法(什么时候是标记清除,什么时候标记整理,什么是复制算法,各有什么优缺点) 17 servlet的生命周期 18 数据库有哪几种索引 18 索引的数据结构(B+树) 19 重载和重入的区别 20 Redis(String是如何插入到Redis) 21 有十亿个数据,如何取出十万个 22 你有什么问题想问我的 23 cookie和session的区别 24 项目有几个表![图片说明]
十、微博 1.hashMap的底层实现原理 2.线程池 3.Http请求头 4 .TCP 三次握手 5 .Java的启动参数 6 .Java常用的工具类 7.JDBC的事务 8.数据库的组合索引 9. 悲观锁和乐观锁 10.快速排序 11.基本的排序算法有哪几种,时间复杂度怎么样 12.聊一下cookie和session,怎么储存的,怎么设置过期时间,session里有啥 13.Spring框架熟悉不,AOP的原理,动态代理哪几种,区别,有关的反射类讲一下 14 .Request请求头里具体的字段,有什么含义 15.Token 16.数据库索引了解不,最左前缀原则,行锁,表锁,行锁,间隙锁,怎么实现的,语句 17.Jar包后面跟的参数 GC参数 18 springboot的事务
十一、海康
十二、BAT中的一个 1.介绍一下项目 2.String 和StringBuffer和StringBuilder的区别 2.Map,HashSet(HashMap底层数组默认长度,如何扩容,concurrentHashMap如何实现分段所)看源码。 2.ArrayList和LinedList的区别 3.双亲委派(JVM) 4.synchronized关键字底层原理 5.synchronized和lock的区别 6.SpingMvc的一个原理 7.数据库的一个优化 8.数据库的两个引擎的区别 9.Redis里面hash和Java里面的Hash的区别。
十三、爱奇艺大数据开发岗位 一面: 1. Spark Streaming项目的流程,对接kafka的两种方式 2. Spark Streaming的工作原理 3. Spark 的工作流程 4. Spark Streaming中的batch如何实现的 5. Sqoop的调优参数与工作原理 6. bulk load的原理 7. java中object的方法有哪些? 8. java创建线程的方式有哪些? 9. hashcode和equals方法 10. HashMap的实现原理 二面:
十六、阿里云后台开发
十七、阿里云数据研发中心:大数据岗位,80分钟。 主要问了一些开放性的问题,比如:
十八、阿里菜鸟 一面(50分钟):
二面 然后进行了菜鸟二面(40分钟),全称聊项目,最后一道分布式场景设计题 十九、腾讯面经:
二十、头条测试开发
为什么投了测开?(我说了实话,我确实是对头条的中台感兴趣,不过该面试官马上告诉我,头条只做业务,中台emmmmm) 介绍项目和项目中遇到的难点问题。
二十一、头条测试开发
一面 首先自我介绍,大概问了一下项目,然后就是java的问题了 1 接口和抽象类的区别 2 arraylist和linkedlist区别,用途 3 map set区别和用途 4 序列化和反序列化怎么回事 5 封装 继承 多态解释一下 6 一个算法题,不是很难,具体不记得了 7 微信点赞测试 8 反问 过了不到一个小时 二面 1 自我介绍,项目介绍 2 从输入网址到关闭窗口发生了什么 3 tcp链接之前具体发生了什么 4 四次挥手是怎么回事,为什么四次 5 一个手机小程序,只能输入1-100的数字,还有一个提交按钮,设计测试用例 6 算法题,很简单的,给一个有正有负的数组变成正负交叉的,并且不改变相同符号数字的相对顺序 7 反问 隔了一天 三面 1 了解公司哪些产品,说说不足 2 设计抖音点赞测试 3 怎么做弱网测试
划重点:面试常问的东西和流程 1.自我介绍,介绍一下你的项目(项目不行的下面的要复习好) 2.Java基础(面向对象原理,String 和StringBuffer ,StringBuilder的区别) 3.集合(属于Java基础,集合问的很多,源码要熟悉,大家都会HashMap和 Concurrent HashMap的区别,你能说出大家不会的吗,底层的锁是怎么实现的,JDK1.8之前和JDK1.8之后的数据结构,看看源码,要透彻) 4.JVM(运行时数据区域(与JMM的区别),GC root,新生代垃圾回收算法,老年代垃圾回收算法,新生代又分什么,垃圾回收机器(CMS,G1),类加载机制(双亲委派等等))--深入理解Java虚拟机 5.并发编程(synchronized的底层实现原理,JMM模型,volatile与synchronize的区别,synchronize与lock 的区别,wait和sleep的区别,悲观锁和乐观锁,CAS(ABA问题怎么解决),并发容器了解哪些,线程池相关参数)---Java并发编程的艺术 6.框架(spring相关的AOP,IOC等等,spring问的很多,基本都问spring)--Spring实战 7.网络(HTTP和HTTPS的区别,TCP/IP,三次握手和四次挥手,get和Post,短地址,从浏览器输入网址的过程,TCP 和UDP的区别等等)--计算机网络第六版/自顶向下 8数据库(索引的底层数据结构,B+树怎么实现的,索引的分类,数据库的事务(ACID),隔离级别,MySQL引擎的区别,Redi数据结构,缓存,消息对列)---高性能MySQL/Redis设计与实现 9.来写两个代码(有的有,有的没有) 9.你还有什么相问的(我觉得我这次面试表现不好,你能给我一些意见吗)
强烈不建议只看面经,只看博客,这样你复习没有章法,知识浮在表面,看书,看书,最好的,看书结合博客,所有的面经都一样,无非就那么些东西,看了书,再看面经,事半功陪,只看面经,你永远停止不前,底层原理不懂,永远不会进步