秋招总结

文章目录

        • 博主简介:
        • 最终结果:
          • 9月
          • 10月
        • 面经:
          • 9月份的吐槽:
          • 10月份的吐槽

博主简介:

ACM铁牌,只有邀请赛铜,暴力杯这种奖。项目也就libco,幸亏意识好一点加运气,拿到了还不错的offer。

最终结果:

9月
公司 进度
海康威视 一二面 offer到手
东品游戏 一二面 offer到手
欢聚时代 一面挂
美团 一面挂
字节跳动 一面挂
腾讯 一面挂

从这里就可以看出来博主贼菜了。。所以9月下旬疯狂看面经补基础知识。

10月

大概是转运了。

公司 进度
帆软 一面 offer到手
拼多多 一二面hr面 池子里面泡着
奇安信 一二面hr面 offer 感觉劝退价
像素软件 笔试+面试+hr面 池子里面泡着
销售易 一二面 后续估计凉
吉比特 一面挂
58 一二面挂
网易互娱 一面挂
高德 一面挂
快手 一面过 二面通知时已签约其他

面经:

之前写过的就贴链接,没写过的就尽量写一写,10月的面试,人心态容易崩。

9月份的吐槽:

海康威视:
C++软件开发

现场面 一面:技术面 30+
全程看简历怼项目,没问基础知识。项目写的作用优点,为什么?为什么需要这个东西?有没有验证过?校园经历有什么收获?编程题:手写代码,二叉树中找到10的节点并输出路经。dfs加栈。如何找最近的10节点?bfs加回溯。

现场面 二面: 综合面 20+
讲一下项目做了什么?以及hr常见问题,四级,女朋友,日常,意向薪资,工作城市等等。

东品游戏:
cocos_2d开发 语言c++

现场面一面:技术面 30+
因为是做游戏的,我没相关技能点,就很尬。
b+树 红黑树 map和set区别 epoll 智能指针 vector和list 剩下相关一律不会。

二面:hr面 20+
实习时间 技术栈 还有一些常见问题。

欢聚时代
c++后台

现场面 一面: 技术面 20+
问得很快,当时早上跑了1000米,人都废了。回答也很随意。
自我介绍 算法简介:动态规划 分治 红黑树优点 窗口n 虚表静态 epoll sleect sort内部实现 以及修改静态库或者动态库的源文件会不会有影响。

美团:
后台开发

视频一面:技术面 50+
https://blog.csdn.net/practer/article/details/101074810
吐槽一下牛客网的网页写代码,面试官还要你能编译运行。真的难顶。

腾讯:
后台开发

电话一面:技术面 50+
https://blog.csdn.net/practer/article/details/101068645
第一次面试,回答问题的时候没经验,就很尬。

字节跳动:
后台开发

视频一面:计数面 50+
自我介绍 经历 线程进程区别 线程通信方式 互斥锁?如何优化? 堆插入 流中输出中位数
结束后2分钟代码运行正确。再次吐槽牛客网页写代码。

10月份的吐槽

因为9月份的基本都不满意或者拒了。所以10月处于没offer的状态。建议还是多看面经,多记。有时间还是多看看书。

帆软:
后台开发

电话一面:50+
自我介绍 linux 数据结构 计算机网络 操作系统 基本都有问到,估计不太用c++ 所以基本没问c++ 回答的也都还行。
隔天hr就oc了。效率真快。秋招末期流程走的快。

拼多多:
后台开发
拼多多基本都是微信电话面,然后代码题发网页写。

电话一面:40+
自我介绍 怼项目 红黑树 touch一个文件发生了什么 tcp 手写hash_table
感觉没什么希望了,结果隔天发来二面通知,真是神奇。

电话二面:40+
自我介绍 项目简单说了一下 一些基础概念 代码 链表合并 最近公共祖先
gcc 静态库如何生成 没试过x
最开心的一场面试了。比较愉快。沟通很顺利。开心了一下午。隔天吉比特挂的短信发过来就尬住了。10月情绪容易波动。特别是没offer的时候。

电话hr面:10+
简单问一下,意向工作城市,薪资,手里offer这些问题。2-3周出结果。感觉池子里估计泡死了。捞不出来。准备签其他公司了。

奇安信
linux开发

视频一面:20
自我介绍,主要问题集中在linux,以及线程进程方面,学习的不是很深入。很多问题回答的不好。不知道刷kpi还是啥,给通过了。也许有一些问题回答的还不错。比如tcp包头大小20-60?

视频二面:20
自我介绍 问题和一面类似。简单问了问项目。又是神奇的通过了。

hr电话面:20+
问了一些,很有水平的问题,或者说简单问题进行了探讨。感觉很专业的样子。我没什么准备反而回答的一般。
总体来说面试难度不小。现在池子里面泡着。

像素软件
游戏c++开发

现场笔试:40+
A B卷 做完A做B 面试官会根据你得分是否继续下一个流程。题量不小,还有叉积点积 矩阵(都忘了 理论上做游戏需要这个

面试:20+
两个面试官轮流问问题,比较随意,问问项目,问问基础。笔试已经包括了不少面试基础题了。

hr面:10+
之前有电话联系过 所以就简单的问了一些问题,谈谈实习什么的。然后就回去等通知了。
一家零几年比较出名的公司,可惜受限制与国内市场了。又是泡池子了。

销售易:
java研发

现场一面:40+
面试官是java的,不太会c++,问了一下基础问题,就开始聊如果入职改怎么转岗的问题了。

现场二面:30
面试官还是java的,应该和一面面试官交接了一下。面了一会就开始问我对java有什么了解?对最新的语言有什么了解?
聊完之后说,不能决定是否录取,宣讲会再面一次大leader,不过太晚了,感觉我等不起了。

吉比特:
游戏研发

现场一面:40+
都是经典的问题,主要问数据结构和c++,然后就挂了,很神奇。
自我介绍 虚函数 内存泄漏 深拷贝浅拷贝 const和指针 引用 排序 归并排序 快排 堆排 无向联通图 dfs o(n) ku o(n^3) 并查集 笔试题 说了思路 其他不会 聊天 人生规划 平时干什么 结束 常规问题 没问操作系统和计算机网络x

58:
后台

QQ一面:20+
记不清了,估计刷kpi。当天回答的贼差。结果过了一面。
QQ二面:20+
kpi 然后挂了。

网易互娱
游戏研发

视频一面:40+
几个面试官轮流问问题。有一些地方就不太会。比较尬的是有一个问题我加错了。然后回答错了。结束才发现。

高德
研发

电话一面:30+
感觉阿里的电话噪声很大。。。。面试官用自己电话好多了。
就是基础问题,面试太多,根本记不清了。

快手
研发

视频一面:40+
记不清问题了,22号一面的,都是基础问题,不过回答的一般,当时都浪了好多天。想吐槽的是28才通知二面,我三方都寄出去了。。

总结一下。没什么项目和实习,很吃亏。所以就要从基础补。基础回答的好一点。看面经不要浮于表面,要深入其中。这样才能`留下不错的印象。可能有你不会的。但是会的一定要回答的很精彩。每次面试都是差缺补漏的好时机。不要浪费机会。知识面也要及时扩展。
项目:比较难准备,起码源码都知道在干什么。在做什么。
基础知识:疯狂补面经,看博客。
算法:大数据和智商题就那么多,看多了就会了。代码题最好看见一个实现一次。面试没什么时间给你思考,调试。

知识点延伸很重要。类似客户端发送包,但是服务器端口没打开回去rst包,linux如果查看哪个线程占用cpu高这些都要会。top+gdb 很多种方法 另外投简历不要拘泥。客户端这些能投也可以投一投。别头铁。看清楚自己在哪,能拿到什么offer。然后去准备。

一些自己准备的一下基础知识。不全,可以简单看看。
1.网络
(1).tcp 三次握手:
c代表客户端 s代表服务端
第一次 c->s 发送 syn包 seq=n 客户端状态变为syn_send
第二次 s->c 发送 syn ack包 ack=n+1 seq=m 服务器转台变为 syn_recv
第三次 c->s 发送 ack包 ack=m+1 seq=n+2 服务器客户端变为establelished
(2).为什么要三次握手:
建立可靠连接,确定序号,序号一般为随机值,防止网络中被延迟的分组在以后被重传。
(3).为什么不两次握手:
两次握手有可能第二次丢失,造成建立多个链接,浪费资源。序列号得到确认。
(4).四次挥手过程:
第一次 c 发送fin c 状态变为 fin_wait_1
第二次 s 发送 ack s 状态变为 close_wait c 状态变为 fin_wait_2
第三次 s 发送 fin s 状态变为 last_ack c 状态变为 time_wait
第四次 c 发送 ack s 状态变为 closed
(5).四次挥手原因:
tcp是双工的协议所以接收方发送方都需要fin和ack 所以有四次
(6).time_wait状态原因:
时长为2msl 如果客户端直接进去close 服务器没收到ack 就会重新发送fin包,客户端close之后 服务端就不会接收到ack而是收到rst,防止最后一次握手数据丢失。 而且如果关闭之后又使用有可能造成数据混淆。
(7)tcp udp 区别:
tcp 有连接的流服务 tcp 拥有标志位 序号 数据校验 超时重传 窗口 拥塞控制 等来控制链接的可靠,以及进行会对网络有益。慢但是可靠 文件传输 重要信息
udp 无连接的报文服务 快 但是不可靠 视频 实时通信等
(8)p2p:
https://www.cnblogs.com/linsanshu/p/5546948.html 特点减少了服务器的负载,负载均衡,人人都是用户也是服务器,缺点用户少了用户体验极差。越多越好。采用哪种拓扑以及如何优化是重点。
(9)打开一个网页发生了什么,例如 www.baidu.com :
dns协议查找到 网址的ip 顺序 浏览器 电脑 路由器 isp网络服务提供商 域名服务器 用tcp协议建立连接 然后就开始用http协议 post get这些请求了 用到的协议 dns http tcp ip arp(以太网会用到mac地址) 路由器上ospf等内部网关协议 bgp等外部网关协议 「
(10)网页打不开问题在哪:
本机 网络 服务器 服务器检测:http协议会返回错误码 网络检测:用手机打开 本次错误:ping 127.0.0.0 本地回环 可以就是本地没问题 有问题可能是硬件或者网络配置
(11)tcp同时打开或关闭
打开:同时两端的状态变化都是由CLOSED->SYN_SENT->SYN_RCVD->ESTABLISHED。
建立连接的时候需要四个数据包的交换,并且每个数据包中都携带有SYN标识,直到收到SYN的ACK为止
关闭:ESTABLISHED->FIN_WAIT_1->CLOSING->TIME_WAIT->CLOSED
CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文
(12).哪些方法解决TIME_WAIT状态过多
保证由客户端主动发起关闭(即做为B端)
关闭的时候使用RST的方式
对处于TIME_WAIT状态的TCP允许重用

2.操作系统
(1).虚拟内存
三级页表
(2).进程和线程
https://blog.csdn.net/zhou753099943/article/details/51771220
线程和进程如何切换:https://www.cnblogs.com/kkshaq/p/4547725.html
协程切换快的原因 只是在用户态 不涉及内核态 只涉及寄存器 没有私有栈。
(3)线程通信方式:
互斥锁 信号量 条件变量
(4)epoll 内核实现
实现:红黑树加链表 红黑树添加删除事件 内核中断发生事件后会回调添加到链表中,查询时返回链表中的事件。
epoll是线程安全的,如果当前线程阻塞,管理的epoll_fd其他线程加入socket且处于ready状态 线程会不再阻塞。
如果是删除socker 结果未知 有的unix会返回socketfd是就绪,除非删除之后立即使用。但是后续操作会失败(bug行为
(5).惊群问题
简单来说就是有多个线程在等待同一个事件,事件发生后,多个线程被唤醒,但是只有一个线程处理事件。其他都会继续等待。
linux内核2.6版本之后解决这个问题,只会唤醒一个。网上看见有人说其实是假处理。
(6).进程间传递文件描述符
使用匿名Unix域套接字,即socketpair()和sendmsg/recvmsg来实现。
(7).select poll epoll
select:轮询,大小有限制1024 每次将所有描述符从用户态复制进内核态
poll:轮询 大小无限制 每次将所有描述符从用户态复制进内核态
epoll:返回链表中的元素 链表 + 红黑树 红黑树管理插入删除 链表用来接受回调函数返回的事件

3.C++
(1).分配空间 malloc:
小于128k调用brk函数分配 由链表管理的内存 大于128kmmap函数分配文件映射区
(2).
静态多态和动态多态:
静态多态 函数重载 编译期确定
动态多态 虚函数 定义时在数据的头部 sizeof 当前类的虚函数只会占用一个指针的空间
作用 确定类型装换之后调用的函数为原先类型的函数。一般接下来就会问你虚函数相关的。
(3).unsigned
存储首位是不是符号位,有符号数 补码运算 无符号不用
(4).引用和指针
引用:别名 不占用空间 只是声明没有定义 必须初始化 不可以空 不可以指向其他变量
指针 :变量 有空间 声明和定义可以分开 可以不用初始化 可以为空 可以改变
(5).右值引用 https://www.jianshu.com/p/d19fc8447eaa
用来延长生命期
可用于实现移动语义 减少不必要的内存拷贝。需要移动构造函数和移动赋值函数。
(6).std::move
std::move函数可以以非常简单的方式将左值引用转换为右值引用。
(7).内存管理
堆,栈,自由存储区,全局/静态存储区,常量存储区,代码区
堆:用于系统分配内存,malloc从堆上分配内存,小于128k用brk函数,大于用mmap函数从映射区分配。
栈:函数运行时,创建变量,结束是释放,高效,但是容量有限。
自由存储区:用new申请的内存。
全局/静态存储区:程序编译时就分配好的,例如全局变量,静态变量。
常量存储区:存放const常量,不可改变。
new和malloc区别(略)
malloc brk函数如何管理内存(略)brk是将数据段(.data)的最高地址指针_edata往高地址推 https://www.cnblogs.com/vinozly/p/5489138.html
(8).动态链接和静态链接
简单来说静态链接会在每个可执行文件内产生一个副本,浪费空间。但是执行速度快。动态链接只有一个库,不会有多个副本,节省空间。更新是只需要更新原来的目标文件。无需将所有的程序重新编译一遍,因为动态是每次执行时链接,所以耗时。
q:静态库的源文件被修改会有什么结果

4.大数据
(1).32位1e9求中位数
当时思路:分组 例如 0-1e8 1e8-2e8…确定是哪组 然后重复这个行为

5.项目
(1).介绍一下libco 如何实现,为什么高效,有什么特点。
(2).为什么用这个 为什么快 有没有测过
别人介绍/吹优点 不用切换内核态和用户态 libgo 1个切换24ns 1000个切换 27ns golang 75/95

6.算法
(1).整数:
求有多少个和为100 不重复 sort 双指针 复杂度 nlogn
可以重复 例如0 100 统计有多少个100 多少个0 最后计数 注意50
(2).bfs不用函数 就是队列 dfs是栈
(3).二叉树左右切换 :
dfs的时候 更换一下left和right就可以了

你可能感兴趣的:(杂谈)