TEG 一二面

一面 2021.03.12

3.10的上午接到第一次电话,但是在上课就挂了,打回去结果是AI

3.11下午还在摸鱼,然后又打过来了,问第二天下午3点有没有时间,然后冲了(

头一天接到电话没有问是什么部门的,面试开始的时候面试官自己介绍了一下是TEG的(我怎么还被广州捞了啊

首先是自我介绍

结束了之后开始问项目(整个面试过程都在问项目,一点算法都没问),项目是寒假赶工赶出来的俱乐部Web

  • Web程序有用户鉴权吗(有,但是只针对管理员)
  • 你的这个项目使用了Django,那么你知道Django的用户鉴权是怎么实现的你清楚吗(不清楚,没来得及看过)
  • 怎么存储的用户信息,例如密码,怎么保证安全性,如果让你来设计保存,会怎么进行保存(哈希,加盐)
  • 加盐的话使用的字符串都是同一个吗(在我构想的加盐方案中是这样)
  • 加盐是为了防止什么(防止暴力跑彩虹表之类的)
  • 你的项目里还使用了RSA,主要是用来干什么?(登录认证,balabalabala)
  • 你使用公钥对用户信息进行加密,但是中间人截取不是也可以用来进行登录(不能,用户一旦登录成功服务器会销毁记录)
  • 项目用的什么数据库(Postgresql)
  • 以前用过什么数据库(mysql)
  • 那我给你一个场景,你写一下sql语句(中间被我打断了,直接说自己对sql语句不熟悉,主要用的是Django里面封装的模型)
  • 那么你对数据库比较深刻的是些什么(最近看的书里面,才看了三章,随便说了一下四种隔离和MVVC)
  • ACID是什么,有了解吗(说了原子性、隔离性、一致性,然后一时忘了持久性)
  • 说一下你使用的谷歌验证码是什么吧,还有你知道这个东西是什么吗(挑战应答,HMAC)
  • 你们这个项目会有部署的过程吧,有没有自己进行部署(有,用docker搞了三个容器)
  • 那么你的代码怎么传到服务器上(scp)
  • 这里面还有爬虫是吧,能说一下使用爬虫的过程中遇到的困难吗(微信文章反爬,只能selenium渲染抓取,图片使用正则表达式获得链接进行下载保存)
  • 你使用爬虫应该需要使用到浏览器内核吧,能说一下怎么把他放到容器里面吗(构建镜像的时候直接复制到对应位置)
  • 三个容器怎么进行通信(使用选项进行连接,但是我忘了是啥选项(docker-compose.yml中的links))

结束这部分之后问了我线程和进程的区别是什么(经 典 老 问),顺便问了下我觉得容器里面跑的后端是单进程还是多进程(我觉得是单进程)

然后到了下一个项目,是课设写的文件传输的东西(Camel-Server),顺着就开始问计网了

  • 你能描述一下TCP的结束过程吗(四次挥手)
  • 那么在挥手过程中会有一方timeout状态,你知道是哪一方吗(不知道)
  • 说一下tcp和udp的区别(可靠和不可靠,是否建立连接)
  • 什么情况下需要udp(视频传输服务,实时视频,例如我们现在这样)
  • 你知道HTTP协议吗,还有HTTPS协议
  • 经常使用的HTTP协议中的类型是哪些(POST\GET)
  • 你有熟悉的HTTP头部中的键值对吗(没有)
  • 能不能简单说一下HTTPS的实现(主要说了没有ssl证书的版本)
  • 既然用户已经有了服务器的公钥为什么还要发送自己的公钥(因为服务器报文也需要加密(猜的),这里正要说证书版本的被打断了)
  • 为什么需要证书(防止中间人进行攻击)
  • 能不能说一下你第一个项目里面可能存在的风险问题(可能存在中间人攻击,但是需要保证一开始进行劫持,否则截获了登录信息也不能用于第二次的登录)
  • 比如你现在是在宿舍,那么你觉得使用HTTPS协议的情况下,你觉得你们学校的网络管理员能够看到哪些信息(GET请求的url连接中携带的参数信息,其他的不太清楚)

小程序的项目问了一下我负责做了些什么,但是没有进行深入的问,问了一下有没有使用第三方服务器

然后开始问安全方面的问题,看到了专业(可是我网安技术真的不行)

  • 有没有学习过一些网络攻击的技术,例入注入之类的(学过,但是不是特别清楚)
  • 知不知道sql注入,简单说一下它的原理(没有进行字符串的校验直接放入sql导致的)
  • 怎么防止sql注入(不太清楚,但是我觉得可以通过屏蔽一些语句符号来达到目的,例入#号)
  • 但是例如你们填写的表格,就是需要填入#号,这种情况下怎么防止(不清楚)

结束,等看有没有二面通知了,我自己觉得挺慌的,然后最后觉得也还行,就是不知道面试官对我的印象咋样了(

说起来写了四个项目但是参加比赛的项目没有问,估计是面试官也不太懂区块链的东西吧hhhhh

已经尽量回忆了,如果还有忘了没写的会补充×

二面 2021.03.15

还是首先自我介绍

然后问了最近有没有做过什么web项目,然后就说了俱乐部的网站

面试官问是不是部署了,然后扔了链接过去

过了一会问是不是纯展示页面,没有登录鉴权之类的(有,只有后台)

  • 怎么实现的(不清楚,这几天没有查到相关资料,但是大致知道是通过cookies之类的东西来实现)
  • 用的什么数据库(postgresql)
  • 有没有了解过mysql(有,最近在看《高性能mysql》)
  • 那么目前的收获是什么(了解了索引,以及前面一些调试的东西但是没有来得及实现)
  • 讲一下索引吧,以及一些应用的场景(应用的场景不太清楚,但是知道它的实现,balabalabala)
  • 那么现在给定一个场景,要实现秒杀功能应该要怎么实现(口胡了加锁之类的,但是实在不知道具体实现啊)
  • 换一个问法,你觉得需要考虑一些什么(高并发,登录的有效,安全性)
  • 这几个点应该怎么实现(口胡了一堆,然后忘记怎么说的了)
  • 对于高并发怎么处理(没怎么接触过,但是我觉得可能需要使用分布式的服务器之类的?)
  • 有没有了解过一些Web的攻击(sql注入,xss)
  • 那么对这两种的防范怎么做(sql实在不清楚,xss主要是检查用户输入)
  • 怎么检查用户输入(不会)
  • sql注入的原理知道吗(知道,balabalabala)

问完高并发就结束了,中间好像也没有问什么问题

  • 你这边最早什么时候可以过来
  • 大概能实习多久
  • 技术栈是go,看你主要使用c++,排斥吗(不排斥,能学)
  • 有什么需要问我的吗

然后问了部门是做什么的、自己这次表现怎么样、部门对算法的要求高不高

之前看到面试邮件里面写了会考察代码能力,然后看了一堆算法,结果一直都是问项目,自己像个小丑(不过也还好)

最后二面凉了,被wxg捞了,不知道能不能顺利一点(

WXG

一面 2021.03.19

这次没开视频,然后我还问了一下需不需要开视频(

常规自我介绍。。。

然后让我讲一下最近的项目(内心:?我不是都写到简历里面了吗

接着讲了一下俱乐部的展示网站

  • 你这里面用了爬虫,能说一下怎么做的吗(说了一下selenium但是面试官没听清楚,我确实也念不清楚,就说了是python里面一个控制浏览器内核的包
  • 你们这个为什么还需要爬取文章啊(答了一下因为俱乐部的活动原因,顺便还聊了一下腾讯俱乐部主要平常干啥。。
  • 我看你的登录操作用了RSA,你知道RSA是怎么实现的吗(是非对称加密,反问了一下我需不需要讲完整的原理
  • 这样吧,你告诉我它主要是基于什么问题来实现的(大整数难分解问题
  • 你们网站的密码是怎么存储的(用了Django中的默认方法,应该是哈希+加盐的方法
  • 你这个怎么保证的安全性,能说一下吗(公钥加密给服务器
  • 但是服务器还是能知道用户的口令啊(这个没有考虑过,只考虑了不被第三方拦截
  • 讲一下你上面这个区块链的项目吧(内心:?合着那边有简历还需要我来自己讲,然后随便讲了一下
  • 那么这个存储的用处是什么(保证时间戳是正确的没有被篡改啊
  • 你们这个是用什么语言(前端vue.js,后端Java
  • Java里面有一个反射的概念,知道吗(后端不是我写的,平常使用C++,所以不太清楚
  • 我看你可能接触前端比较多,能说一下HTTP和HTTPS的区别吗(一个加密一个非加密
  • 那么HTTPS使用的是非对称还是对称(讲了非对称,然后面试官说不对,是使用非对称协商密钥然后使用对称密钥传输
  • 协商认证是用了什么来实现清楚吗(证书
  • 能讲一下证书的实现原理吗(讲不清楚,说了一下是客户端进行处理之后传给第三方进行验证
  • 每一次都需要第三方验证?(不太清楚,面试官说本地会存储证书

这里记忆可能比较乱,在中间还问了数据库的

  • 了解mysql吗(了解一点点
  • 说一下事务型数据库的特性吧(ACID
  • 现在给100亿条数据,怎么进行查询(这种情况需要建立索引吧
  • 能讲一下有索引的数据结构吗(B树或者B+树
  • 那么我们能不能通过哈希来进行查询(有哈希索引
  • 现在通过哈希索引来进行范围查找,怎么实现(?哈希索引还能范围查找的,可以使用B+树和哈希索引进行组合索引吧

这里面试官的意思是说不同的索引方式有一定的优缺点,哈希索引的缺点在于不能进行范围查询

  • 那么为什么不通过别的一些数据结构比如说数组来进行索引(太占用内存了,使用B+树的分页方式可以通过文件IO来进行数据的查找

然后是C++的部分

  • 能说一下C++的特性吗(继承、封装、多态
  • 多态是怎么实现的(使用虚表来进行实现,balabalabala
  • 你提到了虚函数表,能讲一下虚函数表吗(然后又随便讲了一些虚函数表
  • 虚函数表里面的函数指针是什么时候定下来的(编译的时候根据虚函数的声明顺序确定
  • 在C++里面是每个对象有一个虚表还是每个类有一个虚表(即答:每一个对象

这里的表达有错了,其实想说的应该是每个对象有一个指向对应的类的虚表指针,然后面试官一直问我函数不是和对象没关系吗,搅了一会我才发现我表达的意思错了,虚表是每个类一份,但是每个对象指向其对应类的虚表

然后这个时候有另外两个面试官进来了,但是也没问问题就只是看着(慌得一笔

  • 你用的C++比较多,那么知道智能指针吗(浅显的聊了一些
  • C++11里面的move知道吗(不了解
  • 除了这个你还知道哪些其他的新特性(lambda表达式和遍历方法
  • 所以其实你对新的特性了解得不是很多对吧(是的,没怎么用到新特性

大概就是这样,然后让我打开屏幕共享写题(草,终于有一次写代码的面试了?

  • 写一下最大公约数怎么求吧(用递归很快就写完了,啪的一下,很快啊
  • 但是我的输入不保证大小怎么办(好说,再套一个函数
  • 我现在有一个100级的台阶,每次可以走1阶或者2阶,怎么做(啪的一下一个动态规划也出来了啊,想了一下是不是可以用矩阵快速幂,然后当时有点慌了没有把正确的矩阵写出来,就觉得好像是没法优化的
  • 那么如果有n阶的话,怎么办(100变成n,优化了一下空间,cnmd我怎么还是没有想到这个就是斐波拉契数列可以矩阵快速幂优化
  • 如果n特别大的情况下怎么做(如果是超过long long表示范围的话需要取模,但是后面下来我才想起来面试官应该是想让我优化时间复杂度
  • 现在有一个字符串,只有字母和空格,求一下最后一个单词的长度(用了一个标识然后遍历写完了
  • 解释一下代码

最后还是经典环节,有没有什么需要反问的,没什么问的就只好问这个岗位是干什么的了,听了面试官的说明后还反问了一下是不是对数据库和分布式要求比较高

许愿二面(

好了又挂了,果然是我太菜了cnm

企业微信

这部分先删了,利益相关

2021/04/07收到offer