面试刷题10-5

一面:

惯例自我介绍

问在字节夏令营做的项目,如何进行设计的。比方说你用了 Redis,为什么要用 Redis?

Redis 为什么快?

Redis 有哪些数据结构,zset 底层结构?为什么要有跳跃表和字典两个?

你是怎么解决超卖少卖的?如果我不在缓存中做,非要用数据库来控制超卖少卖呢?

计算机网络的三次握手,四次挥手,TIMEWAIT 状态?如何尽量处理 TIMEWAIT 过多?

写道算法题,数组的逆序数。要求能运行!

先写O(N^2), 再归并排序优化

写个 LRU。

写个最长回文子序列 动态规划

限流的算法?为什么用令牌桶?令牌桶的限流有什么缺点?

了解分布式消息吗?

Kafka怎么保证信息有序?

 

二面:

惯例自我介绍

先写个题,矩阵中的最长递增路径,给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 利用记忆化搜索搞定。

又问了一下字节夏令营的项目。

让你系统的设计一个高并发的架构,你会从哪几个方面考虑?

再写一个判断一个二叉树是另一个二叉树的子树? 剑指offer原题

情景设计:一个千万级的APP,你要搞定关注和粉丝列表,你用什么来做。要求最后一个关注的在最前面。

新增和取关都要比较快的反馈你怎么做?

如果一个人关注了之后,服务器宕机了怎么办?

了解RPC吗?说了一点点

你在学校里面觉得做得最自豪的一件事?

你为什么会想来字节跳动?

这个时候必须吹一波,因为想和优秀的人做有挑战的事。

然后 get 字节的offer。


 

面:时长1h30min
自我介绍
TCP的三次握手,为什么三次握手


TCP粘包,保护消息边界和流?

两次发送得消息黏在一起,形成一个包
客户端和服务器最多能发送和接收多少TCP连接数?
说一下B树和B+树的区别。
为什么数据库索引中用B+数而不用B树
B+树相比B树的优势?我说了查询性能更稳定,他说这样不是降低查询效率嘛,那为什么不用B树呢?

B+ 树数据都在叶子节点,IO次数更少
了解数据库索引吗?说一下种类,说一下应用场景。
索引是怎么提高性能的,在哪些列上可以创建索引,在哪些列上不能创建索引
什么时候索引会失效?
怎么知道有没有加索引
B+树的叶子结点上存了哪些信息呢
数据库的事务说一下,详细说一下脏读,说一下隔离级别

脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。

四种隔离级别

Read Uncommitted(读取未提交内容)

       在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。

Read Committed(读取提交内容)

       它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。

Repeatable Read(可重读)

       这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的幻影行。InnoDBFalcon存储引擎通过多版本并发控制(MVCCMultiversion Concurrency Control)机制解决了该问题。

Serializable(可串行化) 

       这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。
事务的底层原理是什么呢
MVCC详细说一下
说一下Hashmap和CourrentHashMap
红黑树说一下,说一下左旋和右旋,画一下给我看看
说一下并发编程的几个特性

原子性问题、可见性问题、有序性问题
volatile关键字的两层语义

保证内存可见性,禁止指令重排
它的底层原理是啥呢
手写一个计数器,开10个线程,保证最后计数输出为10
问一下JVM的内存模型
说一下一个对象在内存里面的生存周期。我说一下一些大对象直接进入老年代。然后面试官说我说错了,这个我不是很理解,感觉网上很多都是这么说的,查了一些资料应该也是会直接放进去的,不懂。
说一下GC算法
说一下OutOfMemoryError
类加载详细说一下
说一下四种引用状态
说一下最长上升子序列,nlogn的时间复杂度

这个比较难,一般用动态规划写O(N^2)

二面:29min
自我介绍
说一下项目
怎么解决超卖少卖的问题,怎么用数据库配合解决
了解分布式事务吗
说一下分布式唯一ID生成
了解RPC吗,不了解。
了解netty吗,不了解。

说一下你登录注册的模块吧,详细过程
你Token的过期时间为什么不能存在cookie里面呢?没想过
考虑过跨域攻击啥的吗,没考虑
那我就没啥问题了,等会给你发两个题做一下就没了。
题目:
补充如下程序通过N个线程顺序循环打印从0至100,如给定N=3则输出:
thread0: 0
thread1: 1
thread2: 2
thread0: 3
thread1: 4
...
注意线程号与输出顺序间的关系。

全美高中生智力竞赛第二天就要开始了,但是大家还没有找到队中的主力彼得·帕克。帕克去哪里了? 原来身为蜘蛛侠的他,被其女友丽兹的父亲,也就是《英雄归来》里面的大Boss,关进了一个仓库里。要打开这个仓库,必须要破解一个独特的密码锁。
这个密码锁构造是从左到右有N个小洞,小洞的编号为1到N, 每个小洞最多可以放进一个小球。密码锁旁边有N个小球用于开锁,每个小球代表一个大写英文字母。密码锁的密码长度X(1<=X<=N),帕克需要从第1个小洞开始依次放入不同小球到洞里。好在帕克的朋友小胖子是一个电脑天才,他帮帕克破解出了其中几个位置的密码。那么请问共有多少种密码组合呢?

输入描述
第一行输入一个字符串,代表N个小球,(1 第二行输入小胖子破解的密码数量M, (0 后面接着M行,代表小胖破解密码的小洞位置和需要用到的字母;
输出描述
输出所有不重复的密码组合的数量

三面:1h10min
自我介绍
简单说了项目之后开始聊规划,聊人生聊了这么久
算是压力面,表现的不好(等等看还有没有后续吧,唉)


 

一面:
首先问了一下在实习,实习是主要干啥了。
简单介绍一下自己。
参加的程序设计竞赛,数学建模竞赛你觉得对你的意义在哪
你以后的发展设想
问了项目部署在哪个环境下:Linux
Linux环境下上线一个服务,如果CPU占用太满了,怎么排查。用ps命令鬼扯了一下
怎么查看内存占用。free
说到内存泄漏,问有没有碰到,内存泄漏怎么解决?我说了GC
说了一下怎么判断对象是否存活,介绍了一下GC的算法
问了一下c++每次都要new,delete,但是经常会忘了delete,那么有什么方式解决这个问题?我觉得比较像IOC的原理,就说了用容器去管理对象,我们在外面不用new,只需要从容器里拿,容器帮助我们解决new,delete。
生活场景下什么时候用UDP。

介绍一下TCP,说一下三次连接的过程,为什么不是二次,四次挥手为什么不是四次?
有没有写过这个连接,说了一下课设写过一个简单的聊天服务器,不过就很简单的你发送我回答那种
问了一个我的项目是什么。说了一下是跟着视频写的,但是自己做了一些优化,感觉凉凉。
说一下mysql和redis的区别,感觉回答的不好

mysql 关系型,redis是非关系型,key,value数据库
redis为什么不能代替mysql,如果redis能存大量的数据呢为什么不能?说到了事务
问我项目中哪里用到了,woc,一紧张给忘了哪用了
又扯了一下实习的工作,说下自己对于这个的理解
有没有什么想我的?问了一下工作地点。

二面:
说一下多态的底层的原理?说了一下编译时多态和运行时多态以及JVM调用invokestatic方法然后调用动态分派的过程,通过栈帧的信息去找到被调用方法的具体实现,然后使用这个具体实现的直接引用完成方法调用。
然后问我它是怎么找到对象实际类的?我不知道啊说了一下反射?他说反射太慢了,那我就不知道了,只知道调了命令

ArrayList 和 Linklist 的区别?大致都说了一下,扯到 ArrayList 线程不安全,我是个智障忘了 Linklist 线程安全不安全了。就说我还没注意到这个,跳过。
详细说一下 Hashmap 的 put 过程
插入链表的时候是前插还是后***还真没注意,就说没注意,猜测是后插。
HashMap 和 TreeMap 的区别
为何要用红黑树? 说了一下插入删除查询的时间复杂度的原因

那为什么不直接用红黑树?说了一下小于8个时候查询什么的O(n)就很优秀了,实现红黑树又比较复杂。
他说这个跟你没关系啊,实现都是底层的事情?那就说了小于8个时候查询什么的O(n)就很优秀了
你为什么一直说个人理解? 我说有的问题我也不能确定我的回答就是正确的,只能通过我已经学过的东西和看过的东西来去确定

写道算法题:问我写 Java 的为什么笔试都是 c++ 写的
给定一个字符串,里面只有数字(0 ~ 9)、字母(a ~ z,A ~ Z),小数点(.),在这个字符串中找出一个最大的合法数字连续子串
123.456 -> 456
123.789.456 -> 789.456
123abc789.4mk56.1cde23 -> 789.4
123.456.789->789
二十分钟写完:
写的稍微有点点问题,但是面试官没看出来,说了一下时间复杂度我说 O(n),他说你这个里面不是又套了一重循环吗,为什么不是 O(n^2) 的
本来说今天就到这结束了,看我没说话又问了一点。
问了一下 c++ 的模板? 我心里我没用过啊,然后说了一下模板不能在局部定义就不知道了
linkhashmap 应用场景 我没用过,因为知道是根据 key 插入有序,说了一下先来后到的场景
深拷贝? 我不清楚说了一下拷贝的概念
问了一下 Java 是引用传递还是值传递
问了内存泄漏的场景?我说了这个的示例https://blog.csdn.net/lzm1340458776/article/details/26386585 说得他一脸疑惑

 

面完发面经,求OFFER

 

一面:2019-9-3 10:30开始

惯例自我介绍,五十分钟

说一下 HashMap 的结构,为什么非线程安全,为什么容量是 2 的次幂

那 CourrentHashMap 为什么线程安全

说一下 Volatile 关键字,聊到底层原理

引申出 Synchronized

说一下 JVM 的内存分配,详细的说一下每一块是存啥,堆分配

说一下对应的 GC 算法

说一下 G1 垃圾回收器

线程池种类,拒绝策略,任务执行流程

说一下死锁

产生死锁的四个必要条件:

1 互斥条件:一个资源每次只能被一个进程使用。

2 占有且等待:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

3)不可强行占有:进程已获得的资源,在末使用完之前,不能强行剥夺。

4 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之

一不满足,就不会发生死锁。

说一下Redis的几种数据结构,问我 zset 的底层数据结构(就知道跳跃表)

说一下 Redis 的数据淘汰策略

TCP 的三次连接

Mysql 的几种引擎,区别是啥

说一下索引,B+ 树

数据库的几种隔离级别,解释一下什么是幻读

幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。

聊项目,秒杀系统设计的,为什么这么设计,那么设计为什么不行

写道算法题:给你一个二叉树,返回每一层的数值相加计算得到的平均值的数组,其实就是一个层序遍历

一面完下午五点收到的二面通知

 

二面:2019-9-4 14:30开始

惯例自我介绍

说一下秒杀系统里面怎么解决超卖的问题的

那么在 Mysql 里面用什么方法解决

说一下Innodb 和 Myisam 两个引擎的区别

数据库的事务特点以及几种隔离级别,解释一下什么是幻读和脏读

SQL

事务的ACID属性

一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

四种隔离级别

Read Uncommitted(读取未提交内容)

       在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。

Read Committed(读取提交内容)

       它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。

Repeatable Read(可重读)

       这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的幻影行。InnoDBFalcon存储引擎通过多版本并发控制(MVCCMultiversion Concurrency Control)机制解决了该问题。

Serializable(可串行化) 

       这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

 

事务的并发问题

脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。

不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。

幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。

事务隔离级别

脏读

不可重复读

幻读

读未提交(read-uncommitted

不可重复读(read-committed

可重复读(repeatable-read

()

串行my化(serializable

说了一下行锁和表锁,共享锁和排它锁

Spring 的 IOC 介绍,提到了反射

说一下 Java 的反射

问了一个 Http 1.0 和 Http 1.1 区别,我不知道说了一下 Http 和 Https 的区别

为什么 Https 是安全的

Http 的长连接说一下,然后给我解释了一下 http 1.0 和 http 1.1 的区别就是这个长连接

OSI 的七层模型,http 在哪一层, TCP 在哪层

写了两个算法题

第一个是给定两棵二叉树,把它们合并成一个二叉树,合并规则如下:如果两棵树的对应节点不为空,把这两个节点的和作为新树的节点,如果有一个节点为空,则把非空的节点作为新树的节点。

第二个就是给你一个循环链表让你找入口节点。考虑空间复杂度和不考虑空间复杂度两种做法

 

 

OPPO 提前批

一面:
自我介绍
static关键字,final关键字。
HashMap是不是线程安全的?为什么不是线程安全?
courrenthashmap怎么保证线程安全?回答了jdk改版后的区别。

问了CAS是啥,大致的说了一下,过程说的是对的,但是几个字母说错了,尴尬。
线程池有几种,记得有四种,只说了三个名字出来。
说一些你知道的这几个线程池的区别,各自的特点。
说了一下一个新的进程加入到线程池的步骤
说一下线程池的几个重要的参数。
问了我newFixedThreadPool这个线程池的初始化大小是怎么决定的,我说测试一下看一般会有多少线程再来决定,面试官想知道一个理论的方法,我不知道。
问了一下你在项目里面承担了什么样的角色,你觉得比较难的点在哪,怎么解决的?
大致说了一下Redis的持久化,以及前缀树来过滤敏感词,问了时间复杂度和空间复杂度。
不知道空间复杂度是多少。

然后看了我在简历上说在学院的助理干过。问我这个工作是干啥的,中间有没有发生什么事情?
说了一件比较操蛋的事情,然后问我是怎么解决的,自己是怎么想的?
然后问了他Java在OPPO里面会用来干啥,就结束了。
二面+HR面:
前期主要是介绍项目,介绍项目的难点,你是怎么解决的。为什么这样去解决。
你是怎么学习的。
你的日后职业生涯规划是什么。
差不多都是这样的问题吧,都是聊项目。
HR面试:
内容被要求保密,但基本上都是差不多HR常问的那些问题。
 

网易提前批(二面挂)

一面:
自我介绍
学习了哪些数据结构?
问了堆和栈的区别:我知道想问操作系统的但是我刚开始一紧张我卡词了然后我说了一下竞赛里面的堆栈,
Java内存划分:介绍了一下几个区域,然后还详细说了一下这个里面是放啥的
怎么GC?说了一下GC条件,对象存活判断的两个方法,GC算法
引用计数法的问题
new一个对象是放到堆上那么你new一个线程呢,放到哪里? 不知道
问了堆的划分,问了GC Eden区的时候对象会怎么办
问了Java虚拟机初始化的参数,我不知道说了有关年轻代的几个参数
如果老年代满了怎么办,我不清楚说了好像是有个full gc可以操作一下
说一下项目的登录注册功能,说一下如何保持你的登录态
你说了你做性能优化,为什么要做性能优化
说一下你项目中出现的异常
数据库挂掉了是怎么表现的,比方说什么日志? 哎都给提醒了我也不知道了,就说了你网页请求访问是没有响应的,功能都没了
最近看了哪几本书,你怎么学习
比方说你碰到了Redis的一个问题,谷歌不到,认识的人也不会,你怎么办? 我说去官网找客服,谁都可以不会但是开发的人员不能不回会
有没有看过一些开源的源码?一开始尬住了,最近是没怎么看源码,面试官很好问了我又没有看过jdk的,我说了看了hashmap,courrenthashmap这些数据结构的都看了
问了一下为什么长度达到一定的长度要转化为红黑树
有什么问题?问了部门业务,说接下来有段空档期想给点建议好继续学习,说了学习微服务,redis继续深入的了解。
二面:
先自我介绍一下
问了实习的东西,觉得最难的最有挑战性的点在哪
kafka的重复消费? 没说好
问了一下项目,登陆注册功能实现
问了生成验证码的实现
设计一个怎么使得验证码有效期,过了一段时间就过期了。
问了线程和进程的区别。
ArrayList的底层原理?怎么扩容?
线程池的概念,好处在哪
多进程和多线程的区别?
你有什么想问我的?当场懵逼,问了怎么这么惊讶,我说面试时间太短了,感觉一般面得不好的时间都不长,说面试时间不是固定的。



网易互联网-C++开发工程师(通过)
一面:
面试官先让给自己技能排个序,我说“C/C++>算法数据结构>操作系统>计算机网络”,他回道:“好,那我们就聊聊操作系统”,我:???
1.进程/线程/协程区别

第一个题目说一通
2.进程调度算法

  • 最短工作优先(SJF);
  • 最短剩余时间优先(SRTF);
  • 最高响应比优先(HRRF);
  • 优先级调度(Priority);
  • 轮转调度(RR)

3.互斥锁,读写锁与自旋锁
4.用户态与内核态的区别以及区分的原因?
5.几种自平衡二叉树,存储用哪种比较合适
6.编程实现快速排序
二面:
方案设计,考虑大数据云存储的实际问题,要求
1.海量数据访问
2.服务器响应速度

3.存储扩容的代价
奇葩HR面:
开局“你这个名字……嘻(想起了高兴的事情)”
然后就一直嘲讽我笔试辣鸡(属实到无法反驳),项目辣鸡……感觉很迷?

腾讯-游戏客户端开发(通过)
岗位变化:移动客户端开发->后台开发->游戏客户端开发
中间被各种挂了捞,捞了再挂,前前后后一共面试15轮。
①  移动客户端开发(一面挂)
windows回调窗口怎么实现?windows事件与消息队列?socket的send函数在内核干了什么?
②  浏览器后台(一面挂)
1.指针与引用的区别


2.字节对齐的作用与大/小端模式


3.TCP长连接与短连接


4.详细描述拥塞控制的四个算法

慢启动,拥塞避免,快重传,快恢复。
5.数据库
③  腾讯金融科技-支付后台(通过但没能实习)
一面:电话探底
1.vector与map的区别
2.进程与线程
3.进程间通信方式
4.同步/异步/阻塞/非阻塞IO区别

5.linux查看网络状态的命令

ifconfig命令:查看与配置网络状态命令 (看不到网关)

# netstat  选项

6.数据库AICD与死锁条件

一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

 

产生死锁的四个必要条件:

1 互斥条件:一个资源每次只能被一个进程使用。

2 占有且等待:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

3)不可强行占有:进程已获得的资源,在末使用完之前,不能强行剥夺。

4 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之

一不满足,就不会发生死锁。


二面:
1.一道简单的哈希相关的数字统计编程题
2.用UDP实现可靠服务需要模拟哪些特性

确认重传,
3.信息安全比赛相关的内容
三面:
情景题设计方案,为海量下单请求生成订单号,摇一摇/高抛抽奖
④ 腾讯音乐-后台
一面:
1.C++STL迭代器失效问题
2.构造函数能否为虚函数
3.虚函数表中的内容
4.进程/线程
5.POSIX线程
二面:
1.协程与线程的区别
2.进程切换的代价包括哪些
3.函数调用中栈的作用
4.TCP头的内容
5.红黑树特性
6.new与delete底层做的事

boss面(挂):
10分钟了解了一下情况,平时看的书,了解的开源项目
(一二面的面试官人很好,善意提醒我多看一些操作系统和网络的书,绿灯放行,可惜当时自己太菜,很多问题没准备好)
④ 腾讯游戏-后台(一面挂)
1.实现固定大小内存池(面试官想要空闲分区链而我用了空闲分区表)
2.纯虚函数存在的必要
3.分布式多点存储,脏读
4.linux用什么命令抓TCP包

tcpdump
5.TCP粘包产生原因


⑤ 微信支付-后台
一面:
1.20分钟做两道比较麻烦的编程题(算法不难,繁琐)
2.基础知识轮番(数据库,分布式,安全方面没什么经验)
3.select与epoll详细区别

二面(挂):
情景问题,浏览器输入url访问过程的优化,设计缓存方案(殊不知HTTP有相应实现)。面试官很好,会引导用学过的知识思考不熟悉的问题。
⑤ 天美-游戏客户端开发
一面:图形学相关,线性空间与Gamma空间,HDR图像与tonemap,全景图,阴影渲染,前向渲染与延迟渲染,opengl VAO与VBO,双缓存等。智能指针循环引用,可变参数模板。建议我学习虚幻4引擎。
二面:
1.opengl渲染pipeline
2.fps游戏实现用哪种传输层协议?需要实现哪些特性保证可靠?
3.操作系统内存管理与碎片
4.射线与胶囊体的相交检测
5.看什么书什么论坛学习

大疆创新-PC软件开发(通过)
一面:
1.C++模板特化/偏特化
2.new/malloc与delete/free的区别,有无[]呢?
3.如何禁用自定义类型的拷贝构造函数与赋值运算符?
4.构造函数与析构函数可以是虚函数吗?
5.快速排序的最坏情况时间复杂度,如何优化?
6.字节对齐的原因,如何禁用字节对齐?
7.项目介绍
二面:
1.详细介绍项目与遇到的问题
2.日志打印系统的设计
三面+HR:
介绍项目问题解决的思路


科大讯飞-软件开发工程师(通过)
一面:
1.C与C++的主要区别
2.现实生活中的面向对象思想
3.TCP三次握手详解
4.socket TCP编程accept发生在三次握手哪里?
二面:
1.Java引用与C++引用的区别
2.图像水平翻转的矩阵
3.ORB特征点与SIFT特征点的区别
4.是否愿意转语言

字节跳动-客户端开发(通过)
提前批被推到不匹配的AiLab,三面都是深度学习老哥,正式批转客户端
① AiLab
一面:
1.solvePnP的DLT方法推导与自由度
2.为什么GAN的损失函数,为什么是log?
3.编程实现随机抽球函数
二面:
1.分类问题的损失函数?为什么?
2.课题相关问题
3.连续子数组最大和,加上最大长度限制之后呢?
三面(挂):
1.链表公共节点入口
2.和为k的所有连续子数组

高频题
② 客户端开发
一面:
1.编程实现四则运算表达式字符串求值,有括号时怎么办?
2.哈希表的常用实现与哈希冲突


3.进程间通信与线程同步方式


4.调度算法


5.页面置换算法

 


6.流量控制与拥塞控制


7.LRU算法实现思路

 


8.数据库特性

 


9.乐观锁与悲观锁
二面:
1.如何实现不等长内存池管理?
2.编程实现海量数据判重
3.是否愿意转语言
三面:
1.phong光照模型介绍
2.高光的实现与blinn-phong模型
3.高斯滤波核
4.编程实现数据压缩(任意字节,要求鲁棒)
5.linux文件系统,inode,软硬链接的区别
6.是否愿意转移动端

商汤科技-增强现实C++开发(通过)
提前批简历被不匹配的视觉/图形研究员锁了,正式批转岗AR-C++
① 视觉/图形研究员
一面:
1.ORB特征点实现
2.ORB-SLAM跟踪线程细节
3.solvePnP的自由度,DLT与EPNP的区别
4.单应Homography自由度(答案8,一时脑热答成5)
5.Bundle Adjustment稀疏性介绍
6.编程实现atoi
二面:
1.ORB-SLAM初始化细节
2.基本矩阵与本质矩阵自由度
3.LM优化算法推导
5.BA的H矩阵纬度
6.李代数解析求导推导
7.从刷题的角度分析一下vector扩容机制的原因(我:???)
8.多路归并外排序
② AR-C++
一面:
1.右值引用与移动构造函数
2.智能指针特性
3.编程查找链表倒数k节点
4.编程实现文件名查找与删除
二面:
1.opengl渲染pipeline
2.虚函数能否是inline
3.虚函数表,虚函数函数体分别在内存的哪里
4.编程快速排序
5.编程实现输出所有子集
6.编程求解股票最大收益
三面:
大杂烩,多且杂,发现一个知识点会就立马换下一个。从二叉树,递归,GLSurfaceView问到进程线程堆栈,还有一堆其他的,最后问到汇编结束

欢聚时代-C++工程师(通过)
一面:
介绍项目,我刚展示一个Android的demo,还没开始问问题面试官就建议我去面一下Android?
1.如何理解智能指针用栈变量管理堆内存?
2.map类型的变量生命周期结束后内存没有释放,为什么?
3.如何用子类的指针调用父类虚函数?
4.构造函数与析构函数中能否调用虚函数
5.流式socket如何理解?设计自己的应用层协议如何保持流式特性?
6.网络服务器设计,实现30s倒计时升级
二面:
详细了解项目,设计方案的优化
终面+HR面:
高并发直播服务器设计需要考虑哪些问题

网易互娱-游戏研发工程师(通过)
一面:
1.介绍项目
2.opengl渲染pipeline,为什么混合与测试在片段着色器之后
3.进程与线程的区别
4.chrome打开不同页面是多进程还是多线程?
5.cache的作用?为什么cache分级?为什么不用高速cache替换内存?
6.fps游戏实现用UDP协议还是TCP协议?怎么解决丢包问题?
7.编程求解所有规定长度的数字图案解锁方案
二面:
1.编程实现循环链表
2.二维矩阵中快速寻找离一个点最近的补给点
3.从玩家姓名列表中快去寻找包含特定子串的项
4.虚拟内存的作用与原理
5.编程输出2/3步跳台阶的所有方案(不是方案数)

阿里巴巴-C++开发工程师(目前还没回绝)
一面(突袭电话):
1.模板特化/偏特化
2.红黑树特性
3.哈希表实现
4.SSL与加密方式
5.redis与跳表(没经验)
6.信息安全竞赛
7.不同特征点对比
二面(突袭电话):
1.项目介绍
2.特征点对比,如何实现旋转不变性?
3.编程求解1/N的小数点后第N位数字
三面(预约电话):
1.项目详细介绍与遇到的问题
2.更愿意做算法/开发?
3.月平均代码量
四面(达摩院电话突袭):
1.进程/线程/协程区别?
2.智能指针类型
3
.docker与虚拟机区别
4.二值图像求直线的方法
5.数字信号处理相关(没太听懂)
6.post与get方法区别
7.内积/外积/最小二乘法
8.除了RGB与YUV还了解哪些通道方式
9.PCA是什么?一般做什么用?
10.除了C/C++还会哪些语言?这些语言哪个最熟?(我回答java)

美团点评-后台开发(二面转远程)
一面:
1.进程死锁条件
2.红黑树特性
3.后序遍历操作
4.按成绩范围分组统计的SQL语句
5.求一棵树的镜像
6.乐观锁与悲观锁
7.同步IO与阻塞IO的区别

网易雷火-游戏研发工程师(未通过)
没做过游戏的……慎重投递
一面:
1.mipmap作用
2.phong模型方向向量计算
3.前向渲染与延迟渲染
4.渲染方程
二面:
1.坐标变换计算
2.宫水三叶身上的shading效果怎么用shader实现?

3.战争迷雾效果实现
4.屏幕上点击一点,快速判断是否与某一箱子相交

猿辅导-客户端开发(未通过)
一面:
1.C++虚函数与虚继承实现机制
2.TCP实现可靠传输机制
3.jni封装的具体步骤
4.编程求解有序数组中与目标最接近的数
5.编程输出所有子集
6.乐观锁与悲观锁
二面:
1.C++顶层与底层const
2.Android活动生命周期转移
3.拥塞控制算法
4.编程删除所有叶子结点
5.连续子数组最大乘积(算法代码没错,但有局部变量覆盖了同名全局变量导致一直没输出,血亏)

京东-C++开发工程师(未通过)
一面:
1.哈希冲突解决方式
2.大文件内容检索
3.装饰者模式与策略模式的区别?
4.操作系统页面置换算法?LRU算法的实现?
二面(几乎都不会):
1.静态编译与动态编译区别?动态编译程序如何找到相应函数的代码段?
2.怎么进入内核态?系统调用怎么进入内核态?
3.几种进程间通信方式在linux中的具体实例
4.徒手画出TCP状态转移图
5.CPU如何实现时间片轮转?
6.从汇编角度分析一下程序加载与页表管理

拼多多- 服务端研发工程师(未通过)
一面:
1.编程查找给定ip落在哪一分段(有序)中
2.服务器升级过程中如何保证查询功能不受影响?无锁结构的实现?
3.笔试题抽查
4.二分查找跳出条件有无=是否影响结果
二面:
1.服务器普通请求与加急请求反规范化设计(无经验)
2.笔试题抽查
3.非递归的中序与后序遍历

BIGO-C++开发工程师(未通过)
一面:
1.编程实现itoa
2.编程实现双向链表中删除某一值的节点
3.select与epoll区别
4.两次称重判断假币与真币哪个重
二面:
1.PnP推导,opengl透视矩阵与相机内参矩阵之间的映射,相机快速运动怎么处理,RANSAC怎么筛除错配,最小二乘法拟合(仿佛投了算法岗)
2.右值引用优化,一个线程被notify的时候如果正在执行该怎么办?怎么从某类型的成员函数返回自身的shared_ptr?

 

你可能感兴趣的:(算法)