所有面试,都是关于后端开发方向,大部分是go,其次是python,本人目前的工作内容也是python人生第一次面试,蜂*游*,视频面试
自我介绍,balabala。
http里的cookie 和session。
上来就问我简历里的项目(oj),数据库有没有做切分,我说暂时没有做,because目前数据量还没有达到要分库分表的地步,问了是垂直切分还是水平切分,以及水平切分后数据库如何访问,(全靠一张嘴胡扯)
why database index is so fast?
nginx引用 配置文件。
go goroutine。
go interface.
init函数能被外部调用吗?
go中多个defer的执行顺序。
select的用法,加上default又会怎么样?
快排,归并排序的原理。
socket编程,(说了bind,listen,received,但是面试官不太满意)。基本上就这些,感觉都回答都不错,最后问了一下简历写的项目,问什么时候做完,我说了两个月may be更久,面试官听了,有些难以接受,说他们是那边非常着急的。所以。。没有二面了,问hr结果的时候,是什么原因,说是入职时间,真是...,想想就后悔。晓*教*,电话面试
简单介绍了自己
面试官说我的github里大部分是python的项目,我说我也是后来才爱上Go的
进程、线程、协程是什么?
我说协程更轻量,切换起来快,(给自己埋坑),面试官又问为什么协程更轻,直接挂了
什么是用户态/内核态,直接懵逼,说了一下nginx里有个参数 sendfile就是直接把文件直接copy到用户态,避免再从内核态到用户态的复制
对docker 的理解
数据库索引为什么这么快,我以书目录举例,当时感觉还可以,挺形象,现在想起来,(恩...幼稚),其实是因为B+树是二分查找,so fast。
又说了索引的实现,我记得不清楚了,就说了是一个B+树,但具体实现。。。。又挂了
tcp三次握手,(这个要想记住自己的name一样,记劳,只要是面试就会问,上一个例外)
tcp为什么是可靠地,我就拿上一个问题回答了,因为三次握手,所有就“可靠”,现在回想起来。。。。(脸都丢尽了,去百度一下就知道原因了)
是否对微服务和分布式有了解,随性扯了一点。
最后面试官问我,有什么想问的,问了他们的开发环境,他说研发都是Mac,当时听了很激动(白激动了)。这次面试全程尬聊,go 的问题一个没问,看样子他们很在乎基础,这才让我真正意识到自己基础太差,尤其是计算机原理和网络,数据库知识也是严重欠缺,总之,基础太差,就酱。pop im(*安科技),电话面试
自我介绍
http cookies 和session,以及cookies是如何存储到浏览器的,这里我一直不懂面试官的意图,最后,幡然醒悟,说在response的header里有有个set-cookies字段,告知浏览器,存储cookies,面试官听到了满意答案,很满意。
redis的五种数据结构,以及自己有没有实际使用过某种,我举了string 和 List,顺带撤了hash
redis内存满了怎么办,我说都设了expire time,所以就。。
mysql索引有哪些以及索引 why fast?我又扯出来一个hash索引,结果,他又问我怎么实现的,结果我又又扯出来了B树,(面试官也笑了)于是,你懂得。。当然,最后都答出来了。
ngxin的负载均衡,我刚开始谈到了master-worker模型,面试官不太满意,说和具体的逻辑业务关系?幡然醒悟,就是多加几个 backend server 以及负载均衡算法(轮训,权重轮训,hash_ip等)
对websocket是否了解,(巧的很,最近一个项目就是用的websocket,算是我第一个real go project)
快排描述
算法题:给定一个链表如何判断一个有环(巧极了,昨天刚看了,这里要感谢盖哥),具体做法就是用两个pointer,一个快,一个慢,判断两个pointer 是否重合。
go的goroutine ,如何停止一个goroutine,有点懵逼,(其实我觉的面试官的意思是如何控制goroutine的退出,可以用channel和Context)
goroutine泄露,或是内存泄漏,没遇到过,但是听说过
go 里的slice 和array 的区别,(slice的底层就是array,但是slice可以动态扩容,另外还有两个属性,len和cap)这次面试,因为有之前面试的惨痛教训,所以准备的较为充分,面试官也没难为我,于是就说等二面,我以为就要见hr了,结果。。。还是技术面)pop im(*安科技)(广州),zoom视频面试(二面)自我介绍,比之前的面试说的都多
python里的装饰器,原理(闭包),用法
除了nginx的负载均衡以外的负载均衡用法,没太懂面试管的意思,他说在nginx之前或之后都可以load balance,我本来想说getway来着,最后也没说出口。
redis的使用,我说了用List做task queue。
线程切换(我只扯到了寄存器。。。)。
说了这个项目部署发布的过程以及我的遇到的痛点。
项目里的websocket的用法,假如是异常关闭怎么办,我说后端对正常和异常关闭的连接一视同仁,我只能keep listening
mongodb用过没有,我说mysql用的比较深,结果就问了inner join 和 join 区别,没答出来(我觉得它们是一样的呀,sql这里是我软肋,尤其是关联查询,所以这就是经常使用orm的下场,再也不用了,除了提高了开发效率,其他的没什么好处)
https的建立过程,(说的我都不知道是什么,公钥,证书,tcp三次握手扯了一下)
http2了解吗?(并行)
go defer 的执行顺序
go interface
如果流量激增,如何应对,我说我做了很多cache,加上nginx应该能应对大部分情况。
给定一个长度为n的数组,让求第K大的数,我说用维护最小堆,以及最小堆如何维护的(之前看了很多遍,本来以为是要撸代码,就差把剑指offer吃了,结果还是问问题,白准备and紧张了三天)
最后我问了假如还有三面,非得是现场面吗?他的回答是:是的这一面又是把脸hu肿了,还是基础不扎实,https 、sql 、load balance 这些该是后端开发的常识。还有就是我的简历竟然有两处错别字,怪不得投了这么多大厂没反应,活该呀,还有就是面试官说了写的有点少,我说没把握的没敢写,总之,就这样caocao结束,估计凉了,暴露实力了。pop im(*安科技)(广州)三面(技术负责人面)视频面项目经历,那个部分让我提高了能力以及遇到的问题
为什么会从上一个实习“离职”(说来话长了)
mysql里用到的优化
怎么用的redis的
websocket的那个项目,如何listen close的
项目语言占比
手撸代码:给定一个数字,求是否是回文数?(ide 比我都紧张)
最后我问了一些我个人比较关心的问题,面试官给我说了挺长一段时间,这里要感谢不杀之恩,之后就是hr面了
pop im(*安科技)(广州)HR面毕设情况
平常遇到问题,都是通过什么途径解决的,(百度,Google)
关于他们的产品总的来说,我觉得早*科技的面试流程是最专业的,一个实习生,面了四面(三面技术面+hr面)呀,应该可以和校招有一拼了,hr还对我说,前面三位面试官对我的印象不错,问我有没有投大厂的简历,这一点让我很惊讶格*深*,电话面试
简单说一下自己学的东西
协程 goroutine的调度实现,我说了M-G-P模型,面试官较为满意
redis 的五种数据结构
redis为什么这么快,我说了(内存,单线程避免切换,最后才是大头,多路复用IO的底层原理,就是epoll)
epoll的源码有没有看过,没学过,但是了解过
socket编程,没学过,但用python写过demo
面试官突然问我,我在学校里的操作系统课上没学吗?(我的天,my dear school。。。算了),我说这简历上写的都是我自学的,和学校无瓜葛,毫无。
问了了解的web framework
关键问了自己doing的project,我说后端全是我做,但是二次dev,不过已经被改的面目全非了,就酱。这次有点凉了,发现自己还差很多,赶快招呼一下“epoll”。
结果的第二天收到了hr的电话,说面试过了...
总结:
基础,基础,基础,计算机原理基础,操作系统,还有重要到天的tcp网络,数据库索引,redis,socket编程,算法就是快排保底,其余的知道的越多越好,绝不让你后悔。
2019.8.9 晚
鬼鬼,在等pop二面的一个小时前,突然接到格**瞳hr的电话,说是面试过了,当我的大脑(@#¥¥@#%¥……%¥!&%¥!@#!),没想到短暂的一面就给了通过,但我说我还有一个面试,还不能答复你,谈了一些待遇(首都不愧是北京)和其他的东西。本来以为又要加把劲的时候,这个offer着实让我背上的压力减了一大半,所以,pop的二面就可能就不行了,结果二面也过了,等着三面。
2019.8.13 早
直到现在,我才觉得早安科技,才是我喜欢的公司,无论是工作氛围以及工作方向都是我喜欢的。
春招
畅*天*2020-03-06
一面(passed)go init 的执行顺序,注意是不按导入规则的(这里是编译时按文件名的顺序执行的)
interface nil 比较
原生map非线程安全,加锁以及sync.Map{}的实现
channel no buffer以及buffer的区别
如何删除slice中间的元素(s = append(s[:i],s[i+1,]...),其实就是切片的应用,i think)
怎么保存在程序崩溃时的数据,当时没理解到,我觉得是(defer+reciver)
go实现一个SQL Pool(可以借鉴database/sql pool的实现)
go 怎么控制查询timeout (context)
docker image 的区别
mysql的主从备份
redis 的五种数据结构,以及其中一个用法
git 创建分支
less more 以及linux 中如何查看日志中某一行的数据 (sed)
查看进程 (ps)
2020-04-02
易鲸×(一面)介绍做过的项目
python 中django的特点,与flask的比较
mvt mvc的比较
函数式 面向对象 面向过程编程
go与python的比较
Go的多态继承
Go的特性(快 gc),协程
Rust有没有了解过(写过hello world)
mysql的使用程度
mysql的架构有没有了解过
B+树
Sql编译(很懵逼)
伴×(一面挂)自我介绍
mvcc
幻读
B+ B树的区别
四次挥手
close_wait过多
算法题(接雨水)
反问好久没有被人挂了,这一次真的又再一次狠狠的被人抽了嘴巴子,还是太tmd菜
×米(一面)自我介绍
针对项目(api安全,redis挂了怎么办)
mysql 各种引擎的区别
B+以及B树的区别
回表
索引建立的注意事项
redis的五种数据结构,以及在项目里的应用
go gc(三色)
go 调度模型
go slice 与arrary的区别以及扩容机制
go 如何关闭goroutine
进程与线程的区别
进程切换的过程
tcp的可靠性
tcp与udp的区别
linux的查看进程,网络,磁盘,内存的命令
反问
(二面)算法题(好多牛牛,dp)
平常怎么学习,下一步的打算,准备学什么东西
redis的五种数据结构以及项目应用
select count(*)在mysql的引擎中那个最快
b树与b+树那个查找效率最高
topK,100万,找钱100,(minheap,quick sort)
反转字符串
反问
2020-10-31 晚补充
春**生(一面 2020-4月份)自我介绍
TCP三次握手
设计模式有了解吗
oop的三大原则
rabbitmq的消息投递策略
celery在rabbitmq的默认策略
rabbitmq的消息丢失
celery的延时任务
python中list和tuple的使用场景及区别
mysql中的满查询
算法题:求第K大的数
春**生(第二面)自我介绍
redis的五种数据结构
mysql的慢查询
讲述了我遇到的项目问题
业务设计题:主要考察的redis里的zset
春**生(CTO面)进程与线程的区别
线程的切换
两个1000万个文件,求两个大文件的重合的元素
算法题:给定两个无序集合,求其中一个集合中所有元素与另一个集合中所有元素差距的绝对值的最小值(sort+二分)