面试题演练9-23

 

一面,上午11点,1小时

(1)现场笔试,写一个lower_bound

二分查找,慢慢写

(2)new和delete过程,顺序

过程

(3)static作用

修饰变量,修饰函数,C++

(4)虚函数内容,为什么要虚析构

(5)BST,AVL,红黑树

(6)vector的扩容,时间复杂度,扩容大小选择

(7)实现双端队列,O(1)时间复杂度下标读取

(8)进程和线程,单核CPU能跑多线程吗

可以,每个线程执行几个时间片然后切换

(9)线程共享的内容,进程间的相互隔离怎么理解?

进程是资源分配的基本单位,每个进程具有独立的堆和栈

(10)三数之和怎么做?时间复杂度多少?后两个指针的时候能用二分吗?时间复杂度?最坏?

(11)一个数组缺失了一个数,找出来?两个呢?三个呢?

二面,下午2点,57分钟

(1)一个二维平面,上面有很多店铺,(x,y)坐标,有的稀疏有的密集,现在要求给定点的最近店铺是哪一个?BFS?那么有没有更优的?比如说落在了稀疏区域怎么办?
(2)一个装备,1-4级升级50%概率,5-9级也是50%概率,但是失败了会掉一级,现在要求升到9级的期望
(3)三个技能框,A,B,C三个技能,不同组合是不同结果,总共有多少个?可以重复使用。假如说不同的顺序一样呢?ABC和BAC一样

3*3*3 = 27


(4)字符串逆置,传char*
(5)100w的数据,name,26个字符,要找匹配BC的那些项。ABCD可行,BCDA可行,FBDC不可行。这里我说前缀树,然后问题在于不是B打头怎么办,面试官提示是否可以对前缀树的结构进行改进?不进行遍历来判断?没想出来
(6)工作地点上海杭州什么的有什么想法吗
(7)现在的Offer
(8)期望的工资
(9)先回去吧,可以前台等一等HR消息,不过出来问HR说回去等消息就行。但是面试官最后让我把简历拿回来了,大概率凉凉。。。

先贡献一波面经攒人品,还有些公司流程没走完,差不多月底都能走完,之后再更新。

LZ基本情况:985本硕计算机,非AI方向,无实习无含金量竞赛,一篇A会论文。投的方向是后台研发,职位根据每家公司不同选的Java研发/系统研发/基础平台研发/游戏研发(不太挑)。因为最早七月的提前批就拿到了字节,所以后面只投了一些大厂。

 

目前结果:vivo(过)、字节跳动(过)、百度(过)、网易有道(等结果)、华为(等结果)、阿里(二面挂) 、腾讯(被捞四次)、美团(还没面完)、网易游戏(还没面完)、快手(还没面完)、微软(9.22笔试,等待中)、滴滴(笔试挂)、微博&搜狗(笔试过,放弃面试)

 

下面按时间顺序附上面经……

vivo(软件研发工程师)

6.4 笔试 6.12 面试(现场面)

一面(40分钟)

  • Static变量和方法有什么特点,能不能访问非静态成员,为什么

Static 修饰的变量和方法是整个类共用的, 不能访问非静态成员,因为非静态成员属于对象有的。

  • Static方法能不能重写,为什么。父子类调用方法访问顺序
  • 抽象类和接口的成员变量有什么差别,类访问权限
  • HashSet怎么实现的,底层
  • HashMap怎么遍历的
  • 线性结构有哪些,二叉树属于吗?

简单题目

  • 二叉树最多有多少个节点?第k层有多少个节点?

2^(k-1)

  • 冒泡排序怎么实现,怎么优化,两层循环各是干什么的。

 

  • 多线程中wait和sleep方法的区别,锁

wait 会释放锁,sleep程序阻塞在原地,不会释放锁

  • MVC模式怎么实现,流程介绍。

模型,视图,控制器

  • Hibernate怎么和上层交互,用过哪些数据库,了解多少。
  • 手写sql:查询从6.1开始到现在每天的评论数量;评论大于1000的数量(注意日期函数)
  • 说论文,说项目(具体细节不说了……)
  • 项目方法是自己提出来的还是有前人做过,有什么不同,改进在哪里。

HR面(20分钟)

  • 为什么来vivo,对软件后台工程师了解多少
  • 在项目遇到的最大的困难,怎么解决的。
  • 你觉得你和别人比优势是什么?有什么缺点
  • 还有一些常规问题……
  • 你有什么问题问?

vivo效率是真的快,面完第二天晚上就给发带薪资的两方offer了,看薪资应该是SP,不过当时看到有5k的违约金,那时秋招提前批也刚开始,想想自己大概率也不会去就拒了。

 

字节跳动(游戏研发工程师)

6.30 笔 7.7 技术一二三面 7.12 hr面(都是视频面)

一面(一小时)

  • 自我介绍
  • 网络分层结构
  • TCP为什么在网络环境不好的时候慢

TCP需要建立连接

  • 滑动窗口机制

简单画图解释下,滑动窗口发送过程

  • Google的BBR算法
  • 抽象类和接口的区别

抽象类要被子类继承,接口要被类实现。

接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。

接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。

抽象类主要用来抽象类别,接口主要用来抽象功能。

  • 数据结构底层 list map arraylist hashmap
  • 堆 栈 方法区的区别
  • Hibernate的session
  • 数据库底层
  • 说项目(都是问论文,不说细节了……)
  • 项目用到哪些设计模式 有帮助么
  • 算法:6个或8个苹果装一个袋子,最少袋子数量 DP背包问题
  • 为啥投游戏

二面(50分钟)

  • 聊项目和论文……
  • JAVA垃圾回收算法
  • 数据库mysql和redis区别
  • 并发:线程池、锁等
  • 对中间件对了解
  • 场景题设计:卡牌游戏数据结构 抽卡概率 十连抽必出卡 单卡概率出
  • 场景题设计:游戏服务端和客户端的设计 分别考虑什么

三面(一小时)

  • 了解哪些数据结构 以时间复杂度的角度说
  • List Map……LinkedList如果要查询O(1)怎么设计
  • 设计模式:项目里怎么做的 优化性表现
  • 深挖项目(问的问题都很深,深挖底层的那种……)
  • 算法:链表k段反转
  • 场景题1:很大地图 每个npc移动 数据结构设计 怎么找周围的npc 算法 以圆半径怎么找 注意玩家是在移动
  • 场景题2:游戏排行榜 弹幕的数据结构设计 考虑哪些因素 怎么存数据库里
  • 场景题3:前100的玩家怎么找 说了分治 分治怎么做 分布式的话怎么一致……

7.12 hr面(20分钟)

  • 自我介绍
  • 自己的优缺点
  • 学习过程中遇到的一些问题如何解决的
  • 性格上的优缺点
  • 家庭情况
  • 为什么想来北京

字节的面试体验很好,7.23就收到意向书了,也是我很想去的厂,坐等月底或者下月谈薪。

 

百度(Java研发工程师)

7.18 一面 7.19 二面 7.22 三面(都是电话面)

一面(一小时10分钟)

  • 自我介绍+说项目…
  • HashMap 底层数据结构
  • 有序 TreeMap怎么实现 倒序呢?

TreeMap底层是红黑树,倒序通过实现Compareable接口的Compare方法实现。

  • 有哪些异常 怎么处理 自己定义过异常吗
  • 类加载器
  • 违背双亲委派模型的例子 Tomcat
  • Tomcat违背过程
  • 自己写一个HashMap走双亲委派会被覆盖吗?
  • 从浏览器传入到Tomcat处理全过程
  • SpringMVC全过程
  • 堆内存介绍 两个survivor频繁切换会进入老年代吗?设置阈值的参数是啥?

 

  • Redis管道
  • Redis文件持久化 会影响主进程吗
  • Redis分布式锁的实现
  • MySql隔离级别 怎么实现可重复读的
  • 间隙锁咋实现 用sql语句说一下
  • MySql索引怎么实现

索引底层用的是B+树

  • 为啥用B+树范围查询比较好?

B+ 树只在叶子节点,磁盘IO次数少。

  • Mysql时间戳 怎么不修改自己增
  • 算法:两个栈实现队列
  • 算法:找二叉搜索树的第k小

中序遍历输出第k个

快速幂的实现

  • 算法:X的n次幂怎么实现

二面(一小时)

  • synchronized底层原理 在哪有应用
  • 场景:银行转账 synchronized怎么实现 在哪里加锁 A和B同时互转呢 一定要同时
  • wait方法 notify方法
  • 线程池
  • Spring 事务传播机制  基于什么实现
  • 场景:事务a里调用事务b,b方法是私有的,怎么做
  • Spring AOP简单说一下
  • mysql联合索引,有ab两索引,a=1 order by b能做么(还有几个sql语句的场景让说索引)
  • 泛型,有个list extend 数字,list可以add吗
  • 场景设计:客户信息 手机号联系方式可以有1~n个,一个人可以有多个号码,新来一个客户判断是否在数据库里,比如另一个同名的人有2个号码,全部包含在第一个人里就算在,否则不算。数据库存很多个数据,怎么设计
  • 设计模式 说五个以及项目里用到的
  • 谈项目……

这一面问的问题都是结合场景回答,很对胃口的面试官,面完整体感觉很棒,答的也还不错。

三面(一小时)

  • 自我介绍
  • Linux命令awk sed
  • 位运算 取模用哪个
  • TCP UDP HTTP 浏览器输入网址之后的流程
  • 知道哪些架构 随便说一些
  • 讲一下微服务SOA DDD
  • CAP原理
  • 说下对分布式的理解
  • 毕业时间 能来实习吗 有和导师商量的余地吗
  • 做过哪些大型的工程类的项目
  • 做项目的过程给你带来的收获,最重要的一点
  • 发的论文难点 困难 怎么做的
  • 为什么不考虑机器学习和大数据方向
  • 对未来职业发展方向的规划和想法 矛盾
  • 对来北京发展的生活压力工作压力怎么看
  • 为什么想到从事技术类开发和测试,你觉得区别在哪,有考虑未来产品运营等非技术类岗吗
  • 个人优缺点 多说几点
  • 最近在看什么书 平时生活中喜欢看什么书
  • 做什么事情会让你最有成就感
  • 最近什么事让你有挫败感
  • 对外界对百度的评价有什么看法,如果你之后入职百度了你会有什么想法
  • 对百度什么方向的研发感兴趣 偏商业化的还是偏用户的
  • 用过哪些百度app 有什么感受和建议
  • 你有什么要问我的

走的百度官网的提前批,面试流程整体感觉很棒,二面问的问题都是结合场景回答,很厉害的面试官,三面主管面属于技术+hr的问题吧,面完就加微信了。hr也联系要了身份证号,但后面不知道为啥没收到测评就被刷了?问主管也一脸懵逼,说报上去了他确定也是要我的,但我就是没收到,已经佛了,搞不清楚百度的流程到底是啥样的……

 

阿里(Java研发工程师)

阿里云  7.24 一面  8.2二面 (都是电话面)

一面(一小时)

  • 自我介绍
  • 项目难点 遇到的最大的问题,怎么解决的。
  • 输入www.baidu.com的全过程

DNS, TCP, HTTP连接

  • 自己实现服务端时,怎么处理响应 ServletRequest和ServletResponse

处理HTTP请求和HTTP相应,从HTTP底层原理回答。

  • 线程池怎么创建 几种线程池介绍一下

Java线程池

  • 无界阻塞队列和有界阻塞队列区别 fixedThreadPool用无界队列有什么不好
  • JDK版本 你用的是多少

1.8

  • 介绍下集合类(Collection、Map)

前面只有一个value,Map有key和value

  • HashMap和HashTable的区别

HashMap线程不安全,HashTable线程完全

  • 介绍下ConcurrentHashMap
  • switch 支持类型
  • OOM遇到过吗 原因 解决方案 你遇到过哪些
  • 给8G的内存 怎么设置堆的参数
  •  
  • drop delete truncate 区别 能不能回滚
  • 1w个数据无序的 怎么找出前1000个最大的 有序的呢
  • Spring MVC流程

二面(1个半小时)

  • 项目难点 平时怎么学习看书的
  • zookeeper应用场景
  • 负载均衡 Nginx七层负载均衡、DNS怎么做负载
  • 缓存和数据库的一致性怎么保证
  • 服务器压力一样,连接过来怎么保证负载均衡,用zookeeper
  • 对大数据的了解
  • 算法:归并排序
  • 算法:设计一个重试执行器

阿里投的比较早,牛客上找的内推,因为想去北京,听说阿里云工作地点有北京所以投了,结果面我的还是杭州的部门……二面问杭州愿不愿意,说不愿意就没有然后了,也不知道是答的不好还是因为地点被挂了……前段时间有另一个部门问要不要面,还是杭州的所以拒绝了,于是阿里一直池子泡到现在,感觉被北京捞无望了TAT……

 

网易有道(Java研发工程师)

8.3笔试  8.16 一面 8.30 二面 9.6 三面  9.12hr面(都是视频面)

一面(40分钟)

  • 常用的数据结构
  • 各种链表之间的区别
  • 算法:链表归并排序。递归写法和非递归写法两种
  • 归并排序的难点
  • 数据库 索引 什么时候不适合用

二面(80分钟)

  • 算法:实现根号2,保留10位小数

牛顿迭代法,这种题目一般很少出现。。。

  • 算法:实现一致性hash
  • 一致性hash底层用的什么数据结构

比较难的题目

  • 介绍项目
  • HTTP协议1.0、1.1、2.0的区别

1.1长连接,HTTP1.0是短连接

  • HTTPS协议双方确认传输密钥过程

面试题演练9-23_第1张图片

  • 场景:select name, age from user的数据库查询过程,以及怎么优化,有索引以及无索引时
  • update age from user无索引是行锁还是表锁,为什么
  • mvcc隔离级别怎么防止幻读
  • 主从同步过程,binlog两种类型的区别
  • 场景:用数据库实现分布式数据库唯一id递增
  • 每个数据库缓存失效的那一刻怎么办
  • 说下对dubbo、zk等分布式的理解
  • 自己设计一个PRC框架要考虑什么
  • 用Tomcat主要是解决什么问题
  • SpringBoot了解吗

三面(30分钟)

  • 怎么设计一对多关系数据表、多对多关系数据表
  • 数据库第一第二第三范式
  • 数据库死锁
  • HTTP的get、post、delete之类
  • 算法:矩阵走方格的最短路径,有障碍物(BFS)
  • 设计微信发朋友圈、浏览朋友圈、删除朋友圈的整个流程和存储结构
  • 说项目和论文……
  • 工作岗位意向 想做哪方面
  • 团队部门更喜欢哪个

hr面(30分钟)

  • 自我介绍
  • 面对非计算机专业的我,你来介绍下自己的项目
  • 遇到的最大的困难,如何克服的自己最自豪的一件事
  • 说一下自己的优缺点
  • 平时除了在实验室外,其他的爱好
  • 团队工作中如果有一个人没有完成 如何对上级交付
  • 平时团队合作的多吗 说一个例子
  • 生活工作如何平衡
  • 现在有哪些offer了

网易二面开始就要现场面了,但那时候有事就放弃了,没想到后来hr小姐姐打电话来给我改成了视频面,因为是视频所以流程整整面了一个月。网易面试体验也很好,总监面的评价说不错,还在等结果。

 

腾讯(后台研发工程师)

8.12 CDG 一面 9.4 TEG腾讯云 一面(均电话面) 8.15笔试

CDG 一面(一小时)

  • 项目和论文介绍了半小时:很对口的面试官,感觉对我的研究方向很了解
  • TCP拥塞窗口 滑动窗口
  • 慢启动算法底层是怎么做的 好处坏处
  • 拥塞变化的原因
  • DDOS攻击 防御
  • HTTP 3.0 2.0 1.0
  • HTTP 2.0 服务器push怎么做的,怎么知道客户端需要哪些资源 为什么要这样做
  • 给N个数找最大的K个数 算法怎么做
  • 说一下堆结构的实现

这是面到现在方向最对口的了!面试官和我都觉得挺合适的,但是他部门在深圳,面试官说如果不接受的话后面就不继续了,没办法真接受不了深圳只能拒绝了……后面面试官又打了两次电话确认我的意向,还是拒绝了深圳,心痛到流泪T_T

TEG 腾讯云 一面(半小时)

  • 说项目
  • 慢启动算法用的哪一个 区别
  • 内核源码中TCP窗口大小怎么计算的
  • WIN_SCALE怎么计算
  • 多个客户端窗口大小不一致 什么原因 怎么设置
  • SO_RCVBUF设置的作用 仅对一个socket
  • 怎么保证所有TCP连接都能有效 什么数组设置
  • 内核源码角度说一下TCP三次握手
  • 全连接和半连接
  • TCP服务器连接过多,怎么排查
  • syncookie关闭了就不能保存连接了吗
  • Linux 查看网络流量  iftop
  • Linux 查看TCP连接状态 netstat
  • netstat参数中的Recv-Q和Send-Q什么意思,Recv-Q爆满了是什么原因

这一面是目前面到现在最难的,感觉自己走错了片场,我真的是在面后台开发吗,太底层了,感觉自己答的很烂。当时说地点有北京,可是后面还是深圳??

中途还有两次被腾讯捞,面试的前5分钟面试官发短信来说“看你之前的记录说不接受来深圳,我这边是深圳的部门,如果不接受我们就不面了”(现在听到深圳两个字我都发抖……)

ORZ 给腾讯爸爸跪了,提前批四次被捞,居然死在了地点上…不知道正式批能不能有机会被北京捞TAT

 

美团(系统开发工程师)

8.15 一面 8.23 二面(都是电话面)9.24 三面(现场,明天来更)

一面(一小时)

  • 说项目
  • 令牌桶算法
  • 登录验证码怎么做
  • Cookie和Session存在哪 如果是多机存储都会有什么问题 带id去找重复了怎么办 多用户修改了怎么办
  • zookeeper数据结构 写节点的内存限制 在dubbo里作为什么角色
  • dubbo中服务调用的几种形式
  • RPC过程 怎么知道要调用的远程主机的方法
  • 怎么把一个异步过程的返回结果转为同步的
  • IOC的循环依赖 怎么解决 有哪几种
  • AOP原理
  • 你遇到的常见异常
  • StringBuilder和StringBuffer区别

StringBuilder线程不安全,StringBuffer线程完全

  • ==和equals的区别

对于值类型,==比较的是值相等,对于引用数据类型,==比较的是地址,equals是Object类的方法,重写equals方法来定义等于

  • HashMap、concurrentHashMap

HashMap线程不安全,concurrentHashMap线程完全

  • HTTP有哪些方法 get和post的区别

get的data在url上,post的data在报文中。

  • 设计模式
  • CAS实现原理
  •  
  • ThreadLocal原理,底层,放在哪
  • AQS实现原理 队列为啥要双向的
  • Condition队列
  • 平时怎么学习的
  • 给你自己的技术打几分、学习能力打几分

二面(40分钟)

  • TCP和UDP的区别
  • TCP时间和资源消耗具体在哪
  • 滑动窗口大小初始值
  • TCP和UDP可以共用端口吗
  • socket先启动服务器还是先三次握手 对应关系
  • 三次握手过程中存在的问题
  • Linux进程通信方式 最常用的哪种

管道,消息队列,共享内存,套接字

  • 共享内存生命周期
  • Linux堆栈和Java堆栈区别
  • Java线程池 ScheduledThreadPool
  • 项目应用属于io密集还是cpu密集
  • Spring的优点和缺点
  • Bean对象作用域有哪些
  • 知道什么别的类似于Spring这样的框架
  • 反向代理为啥叫反向不叫正向
  • Nginx和Apache 为什么Nginx快 底层实现是什么
  • 数据库mysql存储引擎 innodb优势 其他引擎
  • 用索引一定快吗 什么情况下查询快/慢

美团没做笔试直接被捞的,面试还是挺有难度的,会深挖。二面之后说是后面安排现场面,没想到一等就是一个月啊……明天现场三面,面完来更新……

 

网易游戏(游戏研发工程师)

9.7笔试 9.19 一面(视频面)   9.27 二面(现场,待更新)

一面(40分钟)

  • 算法:M个元素的数组随机返回N个(M>N),等概率
  • 算法:实现Map的迭代元素遍历,删除一个元素
  • String和StringBuilder的区别
  • 各种Map介绍一下 put/get操作
  • HashMap是线程安全的吗 会有什么问题
  • ArrayList/LinkedList 前者扩容是迭代器会有问题吗
  • 说一下红黑树
  • 矩阵按行遍历和按列遍历的效率一样吗

不一样,地址不一样

  • Java内存模型
  • Java如何进行内存回收
  • Java 8之前的类对象可以回收吗
  • 编译之后的对象放在哪
  • 类加载过程
  • Socket TCP的客户端和服务器的连接通信过程设计
  • accept是阻塞的吗
  • Socket TCP客户端和服务器的断开过程
  • 出现大量的CLOSE_WAIT状态如何排查
  • 操作系统的虚拟内存
  • 页面置换算法 LRU用什么数据结构
  • 图形学了解吗
  • 玩过哪些游戏
  • 场景题:进入游戏界面时大量玩家排队, 中途有玩家退出 如何设计这样的场景,用什么数据结构
  • 场景题:二维地图 很多点 找离自己最近的玩家

网易游戏是唯一一家北京没有工作地点报的厂,报着对游戏的情怀也要去面试hhh  本周现场面,待更新……

 

华为(通用软件开发工程师)

8.21笔试  9.20 技术一二三面(现场面)

一面(半小时)

  • 算法:正整数n最少由多少个平方数组成(DP,leetcode279)
  • 项目介绍……
  • 论文介绍……
  • 代码量 git维护
  • 说下快速排序和堆排序

二面(半小时)

  • 算法:替换k个字符的最长重复子串(滑动窗口,leetcode424)
  • 项目介绍……
  • 数据结构 树 用过哪些 区别 B+树 红黑树

三面(半小时)

  • 聊人生……

今年华为确实不水了,手撕代码题还是挺有难度的,问基础不多,主要是深挖项目。官网状态目前是“面试已完成录用排序中”。

 

快手(基础研发工程师)

9.16笔试 等面试

官网状态目前是面试,但是还没发起,待更新……

 

微软(SWE)

9.22笔试 等结果

笔试题A了2.8,不知道能不能进面试,祈祷一下,待更新……

 

除了上述的之外还投了滴滴微博和搜狗,滴滴笔试挂了,微博和搜狗放弃面试了,把手头没结束的这些面完就不面啦,LZ对工作地点有硬性要求,除了网易游戏外没有北京岗的都没投……最近已经开始想要放飞自我了,希望等结果的和还没面的都有好消息,攒人品ing?

 

 

 

 

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