面试java知识点

2017年各大网络公司JAVA面试题目参考(头条、美团,阿里)

2018-02-27  本文已影响81人  5f1df32e8c44

今日头条-头条后台岗三面面经

一面:

1.自我介绍,项目

2.网络模型以及各层协议,TCP拥塞控制

3.IO复用以及select,poll,epoll区别

4.指针和引用区别

5.数据库索引有哪些,他们的数据结构

6.复杂度为Onlogn的排序有哪些

7.LRU cache数据结构的实现,leetcode原题,但是stl规定只能用map,其他全都自己实现。(写了好久,主要是要自己写双向链表list不能用STL)

二面:

1.反复追问项目

2.之字形打印二叉树(简单)

3.长短URL相互转换方案(同笔试题,问我方案可以有多少不同URL,高并发怎么办,怎样建立索引以及怎样分布式),讨论了好久,感觉二面很纠结要不要我过去

4.其他忘了,二面记得时间挺久的

三面:

1.还是项目orz

2.同步问题

3.设计模式。java写线程安全的单例模式

3.输入一个数组表示柱状图一个柱子的长度,求柱状图中最大矩形面积。leetcode原题

4.二叉树的最长路径,边递归边求深度边求最长路径(剑指offer原题),这题饿着肚子脑子有些乱,好再后来写了出来没有栽倒✪ω✪

第一次分享面经,希望之后继续人品爆发!

对Java感兴趣的朋友可以加入到我们的JAVA学习交流群:450936584 群里有学习资料,无广告,5000人大群,各级大神都有,欢迎你进来一起学习

题目

网络模型以及各层协议,TCP拥塞控制

数据库索引有哪些,他们的数据结构

复杂度为Onlogn的排序有哪些

LRU cache数据结构的实现,leetcode原题,但是stl规定只能用map,其他全都自己实现。(写了好久,主要是要自己写双向链表list不能用STL)

之字形打印二叉树(简单)

同步问题

设计模式。java写线程安全的单例模式

输入一个数组表示柱状图一个柱子的长度,求柱状图中最大矩形面积。leetcode原题

二叉树的最长路径,边递归边求深度边求最长路径(剑指offer原题)

总结

列表内容

列表内容

列表内容

LRU cache数据结构的实现,使用LinkedHashMap,

LRU, Least Recently Used 近期最少使用算法, 常应用于缓存中的数据淘汰, 其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高“。

算法的定义: 近期最少使用算法,其实就是按照”近期最少使用”这个条件去淘汰相应的数据。

参考链接0-讲解LRU思想

参考链接1-优雅的实现

之字形打印二叉树(剑指offer原题),

层次遍历二叉树,使用三个计数的变量,其中两个用于控制换行(分层),一个用于判断奇偶性(用于控制输出方向,从左往右或者从右往左输出)。

思路及实现代码

列表内容

列表内容

非常好的一道题目,思路如下:

蛮力法,超时。

另外一种方法:

我们认为长度越长且高度越大,则面积越大。

现在,使用两个指针分别指向首、尾,这时它的宽度是最大的。

可能还会出现面积更大的情况,只有当高度变大的时候,所以可以移动两个指针中的较小者,这样可以能会使高度增加以弥补长度变短造成面积减少的损失。

一直移动两者中较小者,直到两者相遇,取各种情况的最大值即是最后的结果。

实现代码

列表内容

今日头条-今日头条后端开发岗面经

一面:

自我介绍

介绍项目

写题:

两个栈实现一个队列、怎么优化

数组每一个元素找出数组右边第一个大于自己的数

实现LRU

二面

介绍项目

TCP四次握手

线程与进程区别

什么是线程安全

乐观锁、悲观锁

左连接、右连接

索引、主键的区别

写题:

给定n,将1,2,,n按字典序排列,求第k大的数

三面:

求两个有序数组前K大的数

拓展:求m个有序数组前K大的数

设计一个带有有效时间TTL的KV存储系统,包含set(key,value,ttl)、get(key)方法、怎么优化

循环有序数组的二分查找

题目

两个栈实现一个队列、怎么优化

数组每一个元素找出数组右边第一个大于自己的数

实现LRU

TCP四次握手

线程与进程区别

什么是线程安全

乐观锁、悲观锁

左连接、右连接

索引、主键的区别

写题:给定n,将1,2,,n按字典序排列,求第k大的数

求两个有序数组前K大的数,拓展:求m个有序数组前K大的数

设计一个带有有效时间TTL的KV存储系统,包含set(key,value,ttl)、get(key)方法、怎么优化

循环有序数组的二分查找

上一篇 下一篇

猜你喜欢

热点阅读