面试刷题11-22

公司面经

字节跳动

因为有春招实习的offer(和某程序设计夏令营有冲突所以鸽了),所以秋招是给了一轮技术面+HR面

技术面:

  • 套路的自我介绍
  • 二叉搜索树已知先序求后序(代码实现)

对先序排序就是中序,然后问题转化为已知先序求后序

  • 25匹马赛跑,5个跑道,怎么以最少的比赛次数来决出最快的3匹(思路分析)

30min左右结束了技术面,然后被通知马上进行HR面

HR面:

  • 你在学校里面觉得做得最自豪的一件事?
  • 你为什么会想来字节跳动?
  • 你觉得你是个什么样的人

其他问题就记不清了233333
PS: Offer Get!!!

美团

线下面试 2轮技术+HR面
技术面:
首先是基础部分:
因为答上来的基础比较少 就2次一块汇总写吧

  • TCP/IP模型与OSI模型
  • TCP/UDP的区别
  • http与https的区别
  • 拥塞控制

 

  • TCP保证可靠性
  • 三次握手/四次挥手
  • 进程与线程的区别
  • 加密算法

然后是算法部分(现场手写代码):

第一面:

  • 好像是个求子串的题 (字符串不带怕的 下一个)
  • 隐约记得是比较简单的组合数学 手玩下样例 就有公式了
  • 比较sb的概率dp

第二面:

  • dfs输出全排列
  • 不使用额外空间的链表翻转
  • 有序链表归并

PS:两面面试官疯狂吐槽 算法题考不到我 问我基础 我又答不上来 让他们很难办 最后HR面完以后让我回去等消息 等了一个月没动静 估计是没了 可能需要的是能直接上手做工程的同学吧

猿辅导

PS: 因为和室友同时投了北京的后台开发 一面面试官是同一个人 问的问题基本一样 靠着室友提醒完美苟过一面

第一面:

基础部分:

  • http与https的区别
  • post请求报文(我直接说不会)

算法部分:

  • 快排求区间第k小
  • 01背包

成功苟过一面 没有室友助攻只能硬抗下一面

第二面:

基础部分:

  • TCP/IP模型与OSI模型
  • 进程与线程的区别
  • 进程间的通信方式
  • TCP/UDP的区别

算法部分:

  • 比较经典的贪心题
  • 完全背包

PS: 最后通过了二面,HR打电话说要去北京现场终面,那时候已经拿了pony.ai的offer,加上后面马上要去区域赛所以就鸽鸽鸽了

商汤

PS:在同学内推下,投了北京视觉研究员,因为拿到offer的时间有点晚了,所以最后没去,但是中间的面试过程和面试官超赞!!

第一面:

  • 已有两个能生成0到1之间的数,并且这些数是均匀分布的随机生成器,给定一个任意的三角形,如何能在三角形内等概率随机的生成一个点(然后对于多边形呢)
  • 给定n*n的正方形,每个点都有权值,有些点是障碍物,问从左上角走到右下角的最小花费

第一面完美通过,超喜欢这个面试官!!

第二面:

噩梦第二面 没问算法 基本上是c++的相关知识

  • vector的相关问题
  • 面向对象
  • emmmm还有一些想不起来 但是答得很糟糕

第三面:

面试官看了简历 聊了聊ACM以及我在队伍内的具体工作 和 平时的学习情况以后 直接问算法:

  • 比较裸的二分图 (23333我很少写二分图 差点gg)
  • trie树 (???估计看我第一个答的这么艰难 第二题就放了点水)
  • 概率dp+AC自动机 (全场面试最硬核的题 给了我一个概率模型 dp转移依赖于AC自动机上的状态)
  • 数学题 (好像是log次二分)

PS: 4个题做对了3.5个 完全ojbk 最后给了SP的offer(听说SP+以上的都是顶会大佬)

Pony.ai

PS: 第一次去现场面 第一次现场见WF选手

线上面试:

  • 问了vector相关知识
  • 二维前缀差分问题 (比较easy)

PS:然后没了 一面过的很轻松 HR通知去广州总部线下面试

线下面试:

PS:因为那天公司下午茶活动 所以我被面了 6轮 超难顶!!!
大概分基础内容和算法总结下 毕竟我基础内容答上来的很少 主要开始记录被问的算法问题吧:

  • 树同构问题(众所周知,树的重心不会超过两个 所以分别做树hash去check就能判树同构)
  • 后缀自动机相关问题 (为了check我是不是板子选手 基本大致分析了一波后缀自动机 但是你简历上不写应该不会问你的)
  • 强连通分量算法 (给了我一个场景 用tarjan算法解决)
  • 链表反转
  • 积分微分的应用 曲率及曲率半径的推导(2333 保研失败后想过考研 正好把高数给复习了)
  • 圆上等概率的选3个点 构成锐角三角形的概率 (现场推导)
  • 给定一个链表 执行三类操作:

    1

    2

    3

    1.将链表的权值都修改成x;

    2.链表后面加入新节点;

    3.打印链表(注意 修改不能遍历所有节点 解法就类似于线段树的lazy标记吧)

  • 已知有一颗n(n<=1e9)个节点的完全二叉树 每一层编号从左到右以此递增 比如 第一层的节点编号为1 第二层为2、3,现在询问插入的第n+1个节点的父亲的编号 (确定所在层的编号区间 二分答案 然后每次log的复杂度去check合法性)
  • 好像还有一些脑洞题和链表题都不太难 记不清了23333

 

 

百度 国际事业部(秋招早期投的)

一面:

问题记得不是很清楚了,因为太早了,还有就是很简单。

数据库索引结构

索引用法,优化方法

愿不愿意转IOS

没有撕代码!!!没有撕!!!

二面:

还是没有撕代码。唉。。。

JVM虚拟机内存+回收等

项目

三面:

详细一点的项目。。。。

总而言之,我记不太清了,因为简单,所以。。。。

全是电话面

 

美团/大众点评 北京数据中心数据平台开发(分布式计算框架开发)

一面(1h+):

这个记得很清楚,因为难得问得很详细。面试官技术不错~

首先是项目,略。

 

数据库引擎结构、区别

索引底层结构,插入数据索引结构的变化等

索引的优化方法,以及为什么(就是优化底层是怎么实现

索引使用(优化器如何界定)

数据库几种日志,以及如何刷新,区别

数据库三个线程用处

数据库事务详细(不是指ACID几个性质,就是事务到底是基于什么实现的)

以上数据库部分是我总结的,面试官问的比较浅,但是我讲的比较多,面试官也全部可以接住我的回答继续问。。。妙~~~体验感很好

 

HDFS数据如何保证不会丢失?

MR详细过程(请注意详细,从RPC开始说)

 

JVM虚拟机回收机制(两种分析方法->几种算法如何选择->新生代老年代如何分配,特殊情况,具体工作等,还差啥自己补充)

 

一个手撕代码,忘了,好像是俩。。。。

 

二面:

30~40min

由于前面问的过于详细,,这面面试官问的,比较少。。。。

设计一个数据系统

手撕八皇后

 

三面:

这是加面,leader面

分布式存储系统和分布式计算框架区别

Spark MR区别

MR和HDFS架构(画出来&说出来)

YARN容错机制

HDFS数据本地性等。。。

 

四面:

介绍公司培养机制,瞎聊。。。

 

shopee 新加坡 后端(服务器)开发(搜索以及竞价排名)

一面:

详细的数据库,没美团细,可以参考一下美团

导入大文件到HDFS如何自定义分片

手撕不记得几道代码(不难,偏实践)

 

二面:

手撕代码(LRU)

数据库各类索引底层一遍

设计一个服务器(此处应有阻塞IO和Reactor模式出没)

项目

 

三面:

leader面

只读业务数据库,如何尽量快将修改的数据同步到HDFS

MR详细过程(没说完,嗯。。。)

再一次设计服务器

多线程为什么对CPU有负载压力

聊天。。。

 

英特尔 云计算开发,上海(面完没有hc了,就酱~)

一共四面(一个部门两面),瞎聊,手撕简单代码。

被拉去面了俩部门,面完后告诉HR对SSP感兴趣去,,然鹅。。。。

 

华为

并不考虑……

一面:

不难,手撕一个代码(居然是暴力解法,,我难受了。。。)

 

二面:

手撕一个代码。

JVM虚拟机

synchronized和Reentrantlock底层,(PS:最好底到硬件)

还是不难

 

三面:

leader面

项目+瞎聊

 

华为小鱼干不错,都是a评级最后给了我白菜

我。。。。。反手就是拒了

 

/*

*********************************************************

问题来了,请听题

*********************************************************

*/

百度 国际事业部

美团/大众点评 北京数据中心数据平台开发(分布式计算框架开发)但是据说今年薪资,十分玄幻。反正我现在也只有调查电话。。。

shopee 新加坡 后端(服务器)开发

 

操作系统基础

进程与线程的区别和联系

• 一个进程可以创建多少线程,和什么有关

• 一个程序从开始运行到结束的完整过程(四个过程)

• 进程通信方法(Linux和windows下),线程通信方法(Linux和windows下)

• 文件读写使用的系统调用

• 怎么回收线程

• 守护进程、僵尸进程和孤儿进程

• 处理僵尸进程的两种经典方法

• 进程终止的几种方式

• linux中异常和中断的区别

• 一般情况下在Linux/windows平台下栈空间的大小

• 五种IO模型

• 守护进程

• 程序从堆中动态分配内存时,虚拟内存上怎么操作的

• 交换空间与虚拟内存的关系

• 堆和栈的区别;从堆和栈上建立对象哪个快?(考察堆和栈的分配效率比较)

• 内存泄漏和内存溢出

• 常见内存分配方式和错误

• 堆内存和栈内存的区别

• 可重入函数和可重入内核

• 操作系统动态内存分配的几种策略

• 内部碎片和外部碎片

• 系统调用进入内核态的过程

• 内核态和用户态的区别

• 常见的进程调度算法以及linux的进程调度

• 中断、陷阱、故障和终止

• 进程通信方法

• 线程互斥和同步的方法

• 内存对齐的规则和作用

• 页面置换算法

• 实现一个LRU页置换算法(或者FIFO置换算法)

• 死锁的必要条件(怎么检测死锁,解决死锁问题),银行家算法(死锁避免)

• 哲学家就餐,读者写者,生产者消费者(怎么加锁解锁,伪代码)

• 海量数据的bitmap使用原理

• 布隆过滤器原理与优点

• 布隆过滤器处理大规模问题时的持久化,包括内存大小受限、磁盘换入换出问题

 

网络基础

网络的几种分层体系结构

• 建立TCP服务器的各个系统调用

• socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的?

• MTU和MSS

• 对路由协议的了解与介绍

• 路由协议所使用的算法

• 路由表的项目包括哪些

• 地址解析协议ARP的过程

• 网际控制报文协议ICMP的过程

• 动态主机配置协议DHCP的过程

• WAN LAN WLAN VLAN VPN的区别

• 介绍一下VPN(虚拟专用网)

• TCP和UDP的区别

• TCP如何保证数据的正确性

• TCP和UDP相关的协议与端口号

• TCP(UDP,IP)等首部的认识(http请求报文构成)

• 网络层分片的原因与具体实现

• TCP的三次握手与四次挥手的详细介绍(TCP连接建立与断开是热门问题)

• TCP握手以及每一次握手客户端和服务器端处于哪个状态(11种状态)

• 为什么使用三次握手,两次握手可不可以?

• TIME_WAIT的意义(为什么要等于2MSL)

• 超时重传机制(不太高频)

• TCP怎么保证可靠性(面向字节流,超时重传,应答机制,滑动窗口,拥塞控制,校验等)?

• 流量控制的介绍,采用滑动窗口会有什么问题(死锁可能,糊涂窗口综合征)?

• TCP滑动窗口协议

• 拥塞控制和流量控制的区别

• TCP拥塞控制,算法名字?(极其重要)

• 网页解析的过程与实现方法

• 应用层协议常用的端口号

• http协议与TCP联系

• http/1.0和http/1.1的区别

• http的请求方法有哪些?get和post的区别。

• http的状态码

• http和https的区别,由http升级为https需要做哪些操作

• https的具体实现,怎么确保安全性

• 在浏览器输入一个URL的流程,这个过程中浏览器做了什么(如www.baidu.com

• URL包括哪三个部分?

• 长连接与短连接的区别以及使用场景

• 一个机器能够使用的端口号上限是多少,为什么?可以改变吗?那如果想要用的端口超过这个限制怎么办?

• 介绍一下ping的过程,分别用到了哪些协议

• 对称密码和非对称密码体系

• 数字证书的了解(高频)

• 客户端为什么信任第三方证书

• RSA加密算法(非对称加密,用公匙和私匙实现);

• MD5原理(MD5是密码散列函数)=> SHA安全散列算法替代

• 单条记录高并发访问的优化

• 数据流和粘包问题

• 一台机器最多可以建立多少tcp连接?

• 五种IO模型的过程和比较

• IO多路复用(select,poll,epoll的区别)

• 有没有抓过TCP包,描述一下

• 一个ip配置多个域名,靠什么识别?

• 服务器攻击(DDos攻击)

• 重放攻击,IP欺骗

 

Linux相关

Linux的I/O模型介绍以及同步异步阻塞非阻塞的区别(超级重要)

• 文件系统的理解(EXT4,XFS,BTRFS)

• 文件处理grep,awk,sed这三个命令必知必会

• IO复用的三种方法(select,poll,epoll)深入理解,包括三者区别,内部原理实现?

• Epoll的ET模式和LT模式(ET的非阻塞)

• 查询进程占用CPU的命令(注意要了解到used,buf,cache代表意义)

• linux的其他常见命令(kill,find,cp等等)

• shell脚本用法

• 硬连接和软连接的区别

• 文件权限怎么看(rwx)

• 文件的三种时间(mtime, atime,ctime),分别在什么时候会改变

• Linux监控网络带宽的命令,查看特定进程的占用网络资源情况命令

 

 

数据库基础

• 关系型和非关系型数据库的区别(各自优点)

• 常用SQL语句(DDL,DML,DCL,TCL)

• 数据库中join的类型与区别(inner join, outer join, cross join, natural join, self join),注意适用场景和sql语句的编写

• 数据库的索引类型

• 聚集索引和非聚集索引的区别(叶节点存储内容)

• 唯一性索引和主码索引的区别

• 索引的优缺点,什么时候使用索引,什么时候不能使用索引(重点)

• 索引的底层实现(B+树,为何不采用红黑树,B树)

• B树和B+树具体实现

• 索引最左前缀问题

• Mysql的优化(高频,索引优化,性能优化)

• 数据库引擎介绍,Innodb和Myisam的特点与区别

• 数据库中事务的ACID(四大特性都要能够举例说明,理解透彻,比如原子性和一致性的关联,隔离性不好会出现的问题)

• 数据库隔离性设置不同会出现的问题(脏读、不可重复读、丢失修改、幻读)

• 数据库的隔离级别,Mysql和Oracle的隔离级别分别是什么

• 数据库连接池的作用

• Mysql的表空间方式,各自特点

• 分布式事务

• 数据库的范式

• 数据的锁的种类,加锁的方式

• 视图的作用与使用方法(如何删除等)

• 分库分表,主从复制,读写分离。(我不会,也没碰到过)

• 项目中哪里用到了数据库,怎么用的

• Memcache和Redis了解

 

大数据和分布式

• Hadoop框架下,各个组件的构成及作用

• BASE原则,CAP原则

• 一致性算法Raft的过程

• TIDB原理

• HBase的存储原理

• HDFS运行原理

• Hive的了解

• Spark的了解

• 介绍熟悉的设计模式(单例,简单工厂,观察者模式等等)

• 写单例模式(饿汉模式和懒汉模式),线程安全版本

• MVC设计模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值