2025年7月18日 17:45:45 星期五

今日头条面试题

第一波

笔试

40分钟 纸上写代码,至少答出一题:

  • 一个环有10个节点,编号0-9。从0点出发,走N步又能回到0点,共有多少种走法?
  • 一个乱序数组,求第K大的数。排序方式使用字典序。
  • 一棵二叉树,求最大通路长度。(即最大左右子树高度之和)

    面试

  • 进程和线程的区别,使用线程真的能节省时间?

  • go协程的调度方式,使用协程真的能节省时间?
  • 水平触发边沿触发的区别?在边沿触发下,一个socket有500的数据,已读取200然后不再处理,是不是剩下的300就永远无法读取?
  • 有函数如下

    1. func t(i int) (i int){
    2. defer i++
    3. return 1
    4. }

    输入1,返回什么?

  • 设计http协议,A端发送 AAAA,至少让B端知道AAAA已发送完成。

  • 流量总入口为api_gateway,api_gateway挂了会导致全部挂挂,用什么机制增大可用性?
  • mysql为什么要用b+树,不用平衡二叉树做索引结构?
  • 创建数据库索引应该怎么考虑?
  • 使用int 做primary key和使用string 有什么优劣?
  • 数据库分表的方法?
  • 表结构,订单纪录:

    1. ID uid, product_id
    2. 1 1 1
    3. 2 1 2
    4. 3 2 1

    写一个语句,求卖的最好的 top 10 product_id。

  • 微服务,A服务请求B服务B1接口,B1接口又请求A服务A2接口。会不会有问题?

  • 不使用高级工具,只使用Linux自带的工具,你会如何debug?
  • 如何预估一个mysql语句的性能?
  • go函数中,返回值未命名,发生了panic,但是在函数内recover了。函数返回什么值?比如(伪代码):

    1. func t() int{
    2. defer recover()
    3. panic("hi")
    4. return 1
    5. }

    如果是在命名函数中呢?

    1. func t() (i int){
    2. defer recover() and i=3
    3. panic("hi")
    4. return 1
    5. }

    输入1,上面函数的返回值是?

  • socket中,在tcp协议层面,数据分为10个报文发放。1-7次很顺利,第8次丢失。
    这次通信一定失败吗?
    如果第8次数据会重发,那在接收端是不是:先读取到1-7次的数据,然后读取到8-10次的数据?还是9-10次的数据会先到达?

第二波

  • 手写程序
    一个数字字符串被5个竖线分隔为6段,如:
    123|41|025|43|2|1
    竖线可以自由移动(两个竖线不能紧贴),求满足条件:所有分段的数字小于600(如上,123,41,25,43,2,1即满足条件)的所有结果

  • free -h,buffers 和cached有什么不同

  • 后台进程有什么特点,如果要你设计一个进程是后台进程,你会考虑什么
  • 僵尸进程是什么,如果产生一个僵尸进程,如何查找僵尸进程
  • 孤儿进程是什么
  • 一个进程有20个线程,在某个线程中调用fork,新的进程会有20个线程吗?
  • tcp/ip 流量控制和拥塞控制
  • 301/302有什么区别?应用上有什么异同。
  • 50X相关错误码的内涵是什么?
  • close wait和time wait是什么?如何排查?有什么意义?
  • http req和resp的中数据有哪些
  • 什么是连接的半打开,半关闭状态
  • 假如一个业务依赖单点redis,此redis故障将导致业务不可用,如何改进
  • redis sharding有哪些做法
  • 当大量数据要求用redis保存,单机单点难以满足需要,设计(换寻找)一个负载均衡的方案
  • 当redis 采用hash做sharding,现在有8个节点,负载方案是 pos = hash(key) % 8,然后保存在pos节点上。这样做有什么好处坏处?当8个节点要扩充到10个节点,应该怎么办?有什么更方便扩充的方案吗?(一致性hash, presharding)
  • 如何保证redis和数据库数据的一致性。比如用户名既保存在数据库,又保存在redis做缓存。有如下操作 update_db(username); update_redis(username)。但是执行update_db后故障,update_redis没有执行。有什么简单办法解决这个问题。

来自 大脸猫 写于 2018-09-07 11:24 -- 更新于2020-10-19 13:06 -- 5 条评论

5条评论

字体
字号


评论:

● 来自 go 写于 2019-03-07 21:51 回复

楼主面试进入头条了吗?

● 来自 大脸猪 写于 2019-03-08 11:15 回复

@go 没有鸭。去的小企鹅。

● 来自 大脸猪 写于 2019-03-09 19:04 回复

我是一头猪。哦哦哦哦哦

● 来自 admin 写于 2020-02-13 21:42 回复

7777

● 来自 1132771621@qq.com 写于 2020-02-13 21:43 回复

<span>