zoukankan      html  css  js  c++  java
  • 今日头条面经汇总

    算法

    • 翻转二叉树
    • 最大连续子串和
    • 给一棵边权树树找到最大路径,要找到两个端点怎么办
    • 给一个字符串和单词列表,判断字符串能不能由这些单词组成
    • 给定一组股票的价格,最多买卖0一次,问最大收益
    • !!!二叉树任意两个节点之间路径的最大长度
    • 二叉树的深度
    • lfu
    • 一个链表 奇数位升序偶数位降序 让链表变成升序的
    • 给你一个循环后的数组 比如 45123 问你恢复原数组 最少几步 原数组是升序的
    • 一个数组 里面存着 1 -- 无穷大的数 但是他的十位数 比如 10 拆成了 1 和0 问你这样拆分的数组里 让你求i位置的数字是啥 数字肯定就是0-9的数
    • !!! 0-25表示A-Z,给一个数字字符串,求有多少种解码方式
    • 给定一个乱序的链表,现在有一个操作,可以把链表任意位置的值移动到链表的最后。求链表排序所需要的最少操作次数。
    • 已知一个函数rand3() 可以等概率随机产生1,2,3,请实现函数rand7(),可以等概率随机产生1~7
    • 当你在搜索框输入h的时候会出现一些h开头的单词,然后再输入一个a(ha),会出现ha开头的很多单词,现在给你一个词典,让你实现这个功能,当用户动态的输入字母时,跳出以此字符串为前缀的所有单词,要求时间复杂度最优
    • 找一下两个节点的LCA
    • !!!给出k对括号的全部正确匹配方案,如k=2,输出()(),(())
    • 将一些柱子整齐的摆在一行(立着),高度存在数组height[]中,height[i]表示第i个柱子高为height[i],然后往凹下去的地方倒水,问一共能蓄多少单位水,比如[5,1,3,4,5,1,3],答案是7 2=9
    • 快速排序
    • 抛2k+1次硬币,问正面次数比背面多的概率是多大,并讲出数学证明思路
    • 给N个数字,返回这N个数字能组成的所有二叉搜索树
    • 给一个字符串,得到它字典序最大的子序列
    • n个整数的无序数组,找到每个元素后面比它大的第一个数
    • LRU
    • 实现一个二叉树的持久化方案
    • 实现二叉树的层序遍历
    • 旋转打印矩阵

    数据库

    • 索引为什么用B+树 为什么不用B树
    • redis为什么是单线程
    • redis单线程有什么缺点,如果用多线程有什么 优缺点
    • aof,rdb,优点,区别
    • 数据库的特性
    • 如何实现数据库的原子性,可以用伪代码实现吗
    • 数据库中的WAL技术
    • 查看索引使用情况需要哪个关键字
    • 修改MySQL字符集需要哪个关键字

    计算机网络

    • 三次握手、四次挥手
    • 三次握手的隐患
    • TCP/Ip
    • 滑动窗口
    • HTTP2
    • cookie和session
    • HTTP缓存
    • GET和POST
    • POST和PUT
    • 端口的作用

    操作系统

    • linux内核存储方式
    • 什么是页式存储
    • Linux线程与进程的区别
    • 键盘敲一个A,发生了什么
    • 介绍5种IO模型
    • 异步编程的事件循环
    • 操作系统为什么要分内核态和用户态
    • 为什么要有page cache,操作系统怎么设计的page cache
    • 协程

    设计

    • 假设现在有一个情景,一些客户端疯狂的访问你的服务器,然后你现在要限制他们的访问,比如说一分钟只准访问100次,怎么实现这个功能,伪代码实现
    • 长短url

    ## 一面

    一面提前去了,结果前面一个面试官没结束面试,后面给换了一个面试官。

    问的问题很多,只能凭记忆来了。

    1. 先自我介绍一下。

    2. 你这个时空索引是什么,怎么做分布式时空索引说一下

    3. 说一下你这个项目吧,你在这个项目中主要干什么

    4. 你对锁了解多少?无锁HashMap怎么设计?(这个自己找死,索性面试官接了个电话换了个话题)

    4. 你对Hadoop了解多少?知道HDFS的机制吗?是如何分块的,每块保存多少份?为什么分块大小是这个?介绍一下Namenode和datanode。

    5. 介绍一下MapReduce怎么做到?在map阶段和reduce阶段分别做了什么工作?

    6. 你这些语言都会吗?(c,python,scala)强行扯了一波怎么学习Scala的(基本上就是Coursera的课)

    7. jvm的内存怎么划分的?什么是本地方法栈?

    8. java的锁了解吗?有哪些锁,都说一下?

    9. 进程与线程的区别

    10. 进程的通信方式

    11. 进程的内存模型(没理解具体要问什么,直接跳过)

    12. 什么时候会引起进程的切换?加锁会让进程切换吗?(自旋锁)

    12. 写一道题:二叉树的层次遍历。写完解释一下意思,面试官问用递归怎么写?简单描述了一下思想。

    13. 你有什么问题需要问我的?问了一下部门具体干什么的,偏业务还是偏底层。面试官说偏业务

    14. 时间到了,就不问网络了

    ## 二面

    1. 自我介绍一下

    2. 我先看看一面面试官都问了你啥?你先做一道题,给出了一道题,给出输入输出,反转字符串。比如“ abc hello sam ”反转成“ cba olleh sam ”。

    3. 你说一下你第一个项目?storm和jstorm有啥区别?

    4. Kafka你了解多少?kafka的基本概念说一下?你们这么项目是怎么使用kafka的?多个消费者同时消费一个topic,它们如何消费的?

    5. 你这里用到了redis,了解redis吗?(不了解,换了一个)

    6. 你这里一旦没写入redis,但是消费了该数据,怎么保证数据的正确性。讲到实际场景数据要exact at once。说了一下jstorm的保证机制,没达到点上,后面又说用事务来做。面试官说还没到点上。后面给我解释了一波。

    7. 你对hadoop、spark了解多少?用过多少?你还了解其他大数据相关的东西吗?说了一下毕设中了解的raft算法,以及说了一些raft的基本原理。

    8. 你们这个云集存储项目是干啥的?这里把项目介绍了一下。

    9. 你用mysql吗?(不用,我用pg)

    10. 用到什么程度?简单的表,在处理时并不复杂。

    11. 再做一道题。[1 1 2 2 3 3 4 5 5]原地去重,要求最后[1 2 3 4 5 1 2 4 5]前5个数是去重的结果,后面的数是重复的数,顺序随意。要求原地,并且面试官强调代码只有10几行,写多了肯定错。

    12. 写完看了一下。面试发现一个小问题,给说了一下,一开始没理解,后面理解了说把语句调到前面就行。他说没问题。

    13. 你了解哪些保证线程安全的手段?

    14. 你有什么问题要问的?(这边实习需要全职吗?喜欢全职,一般要求4天)

    ## 三面

    都不知道自己在干啥?

    面试官给出了一个情景题,有两个数据集A和B,A的属性字段有(logid, uid, item_id, attrs1, ts),B的属性字段有(logid, uid, item_id, attrs2, ts),把这两个东西合并。用你最喜欢的方式。

    一开始题目意思都没有理解,向他请教了一波,问他是否是join操作,是否是写SQL语句。面试官给我说,你可以理解为join操作,不一定使用SQL语句,用你最熟悉的方式解决这个问题。

    强行说了一波MapReduce怎么做,面试官给纠正了,这么做存在什么问题?后面又给A和B加了一些限定条件,问我怎么做?比如A里面uid, item_id可能有多行,你怎么merge。所幸说了一个笛卡儿积,后面才可以继续下去。

    后面有限定了B里面没有重复,要么为0,要么为1。怎么做?你先写一个试试?

    写了一个。分析一下时间复杂度,后面还有没有更优化的方案,你这里为什么要排序?(便于查找)怎么利用只有0和1这个条件?后面换成Map来做,又分析了一波时间复杂度。

    上述场景切换到流式场景,你怎么做?先写个伪代码,解释一下思路。

    后面没写伪代码,只是说了一下思路。后面问,A和B那个可以删除?我去这里又蒙蔽了。后面他把条件说了一下,又分析了一波,觉得A和B里的元素都不能删除。他分析了一下,说再想想,后面分析了一波,说A里面凡是B里有的可以删除,没有的不能删除。

    主要总结的是后台研发岗和机器学习岗的面经,反正头条的揍性就是上来一堆算法题,刷题吧骚年!

    参考

    https://mp.weixin.qq.com/s/EwG6K2x_JUzb3PtEYh9jFg

    https://www.nowcoder.com/discuss/71505?type=0&order=0&pos=15&page=1

    https://www.nowcoder.com/discuss/72122

    http://www.cnblogs.com/weiyinfu/p/8546080.html

    https://www.nowcoder.com/discuss/71748?type=0&order=0&pos=6&page=0

    http://www.codingstar.cn/article/57

  • 相关阅读:
    根据当前系统时钟或签名文件的时间戳记核对时,所需要的凭证不在有效期内。
    自定义生成二维码
    MyBatis 开发学习记录
    SPRINGCLOUD 开发学习记录
    DOCKER 开发学习记录
    Spring in action学习笔记
    23种设计模式JAVA 实现目录总结
    访问者模式
    迭代器模式
    简单工厂模式
  • 原文地址:https://www.cnblogs.com/DarrenChan/p/8779509.html
Copyright © 2011-2022 走看看