记录一次不太寻常的“面经”

前言

提前声明,此次面经过于离谱,可能不具备参考性
本人就读于某辣鸡双非,应聘时大三在校,小菜鸡一个
期末考完后就时不时逛一下Boss直聘,看看有没有合适的实习岗位,本来提前看好了维塔士的C++客户端开发实习,奈何已经停止招聘了,只能继续寻找其他中小厂的实习。
投了几个手游和端游小厂(我这水平大厂门都没有),有些压根不回,有些要了简历就没有下文了,只有一家做端游代理的小厂直接就发来了线下面试邀请,岗位是C++游戏开发,后端服务器方向(其实客户端也要做,等于是全栈了)。看了下待遇啥的都还能接受(饿不死就行),问了问大概要考察的内容,回答就是简短的“技术”,讲道理当时是比较慌的,毕竟这两个字包含的东西太多了。
约了第二天面试,再恶补八股也来不及了,就随便看了看面试注意事项,稍微改进了下简历,印出来后直接就去了。

笔试

提前半小时到了公司,跟前台小姐姐说明来意后让我坐在前台大厅的小桌子边等,几分钟后拿来了申请表与笔试题,时间90min。本来是14:00开始,但我提前去了就直接就让我开始答(所以说提前到还是有好处的)。

客观题

题目记不全,大概是以下这些:

  • 编程语言:C/C++基础语法,内存分配,面向对象,指针(大部分都会)
  • 数据库:sql多表查询(蒙的,好像答错了)
  • 游戏相关:网游工作原理流程图(不会,猜测应该是想考察客户端与服务端的通信,偏向计网)
  • 英文题:三道选择题,都是简单的C/C++题目,参考第一条

编程语言部分:

  • 内存分配主要就是考察mallocsizeof,会与指针一起考
  • 指针大多是对象指针/引用,函数指针,字符串指针这些,会与面向对象一起考
  • 面向对象算是考察的重点,涉及构造与析构顺序,运算符重载,拷贝构造这些

客观题难度其实比我想象的低很多,感觉跟学校的C语言期末考试比起来也就难了50%左右(辣鸡双非的期末真的是有手就行)。可以说只要把C/C++基础知识学完就能答个七八成

主观题

就一道,写出你的网游经历与对外挂的原理分析
这个属于自由发挥,我经历写的ow,csgo,pubg,糖豆人这几个,主要是便于外挂分析,以我的回答为例(瞎扯,图一乐就行):

  • ow的外挂主要是透视+自瞄,原理就是对数据包的拦截以及解密,把敌人坐标及技能状态读取出来,再配合鼠标移动模块实现。
  • csgo的外挂除了透视自瞄外还有延迟挂,假身挂这些,要想实现除了单纯拦包解包外,还需要伪造客户端数据包欺骗服务器。
  • pubg的外挂更是重量级,有瞬击,范围,子弹追踪,上天,遁地这类变态功能,这是因为pubg把很多应该由服务器负责的判定放在了客户端,所以外挂可以伪造出更多的数据包,后续官方也在数据包中加入“暗桩”来识别这些伪造的包(然并卵)
  • 糖豆人初期外挂泛滥则主要是将内存数据完全裸露在外,甚至通过ce这类内存修改工具就能实现飞天加速这类变态功能,后续反作弊系统上线后才将裸奔的内存数据隐藏起来。

重难点

只记录我认为的重/难点,水平有限写的比较烂,如果代码有错误欢迎评论区指出

1.编程实现十进制转十六进制,不得使用已经定义的库(string也不行)

分析:就是纯手撸实现进制转换,先十转二,再二转十六即可,因为不能用string,所以用char数组实现。大体思路就是把整数每一位拆出来存到数组里,然后转换,注意二转十六时位数要补齐到4的倍数,否则会出大问题

#include <iostream>
using namespace std;
int bindex=0,hindex=0;
char res[1050];
char bnums[10050];
void DtoB(int num)  //十转二
{
    while(num)
    {
        bnums[bindex++]=num%2+'0';
        num/=2;
    }
}
void BtoH()     //二转十六
{
    char hnums[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    while(bindex%4)     //如果位数不足,则补齐
        bnums[bindex++]='0';
    for(int i=0;i<bindex;i+=4)
    {
        int h=(bnums[i]-'0')*1+(bnums[i+1]-'0')*2+(bnums[i+2]-'0')*4+(bnums[i+3]-'0')*8;
        res[hindex++]=hnums[h];
    }
}
int main()
{
    int n=0;
    cout<<"输入十进制数:";
    cin>>n;
    DtoB(n);
    BtoH();
    cout<<"转为十六进制后:";
    for(int i=hindex-1;i>=0;i--)
        cout<<res[i];
 } 

file

这题其实我是答错了的,当时写的代码只能运算偶数,奇数直接自动忽略结尾所有的0(感谢技术官不杀之恩)

2.请说明以下两种循环的优缺点及适用场景

//1.
for(int i=0;i<100;i++)
{
    if(condition)
        do1();
    else
        do2();
}
//2.
if(condition)
    for(int i=0;i<100;i++)   
        do1();
else
    for(int i=0;i<100;i++)
        do2();

不太会,写的是第一种即使condition恒为False也要循环100遍,只适合condition不固定的情况,第二种如果每次循环condition都可能不一样的话就根本进不到后续逻辑,只适合condition固定的情况。有老哥知道的麻烦评论区告诉小弟orz

3.实现对象的构造函数、拷贝函数、析构函数、复制函数(重载运算符)

class Test
{
public:
    Test(char* cptr = NULL) {   }   //构造函数
    Test(Test& test) {  }   //拷贝函数
    ~Test() {   }   //析构函数
    Test operator &(Test &test) {   }   //重载运算符
private:
    char* ptr;
};

题目记不太清了,答得也记不太清了,反正是跟指针一起考的,这题我也蒙的很,写是写完了,但总感觉有几个写的不太对,具体哪里不对又说不上来(毕竟没法现场编译),指针内存这块知识确实还有待提升。

面试

这是最离谱的一部分,笔试答完后把卷子交给前台小姐姐,然后领我进了一间会议室,等了一会技术官进来了,让做个自我介绍,然后就拿着简历和笔试卷子看,等我介绍完后(大概50s),又盯着简历和卷子看了一会,直接就说答得还可以,可以要(???)
全程甚至可能不超过5min,我直接傻掉,本来觉得笔试挺简单的,重点可能会在面试,结果面试只是走个过场,只要笔试过关直接就发offer了。。。

整体感受

之前投的几个大厂给我整自闭了,下意识以为所有的开发岗难度都不会低,结果现在才知道,小厂难度确实不高(仅限实习),不管是笔试还是面试,难度跟大厂比起来真的天差地别。不卡学历,不卡项目,不卡工作经验,只要在校课程认真学基本都能过,感觉小厂更注重努力和学习态度,不一定需要特别出众的技术(也可能这是特殊案例)。
这次面试之前,也没有特别的准备,除了略微修改简历外,也就准备了一小段自我介绍,模板就是学校+专业+兴趣+做过的东西(比如我就说搭建了个人技术博客),200字左右,说完也就1min不到。
本来刚到公司的时候还比较紧张,笔试题一发反而冷静了,就当是一场难度稍高点的校内考试,整个流程也很顺利,技术官和前台小姐姐都挺好的,完全没有感受到压力。

心得

虽然说笔试题不难,但其实后期复盘还是有很多当时没发现的错误,这次走下来感觉线下笔试要比线上oj简单不少,毕竟oj错了就是真错了,线下的话可能技术官会有意无意忽略掉一些小错误。
主观题一定要尽可能多写,虽然不能加更多分,但最起码你的态度能让面试官看到,哪怕跑题了,也不会留下什么不好的印象,毕竟一张满满的卷子交上去,哪个面试官看了都觉得你有认真在答。
还有就是这笔试的时间其实蛮吃紧的,90min我几乎全程都在答题,就这样也只是刚刚答完,如果算上提前发卷的话,我的作答时间已经是超时的了(再次感谢前台和技术的不杀之恩)。


差不多就这些了,这次也算是我的第一次面试,之前投的大厂除了挂笔试就是挂简历,属实给我整抑郁了,这次也算是多多少少找回了点信心,有跟我一样是双非的同学如果技术不是特别出众又想找实习的话,建议把目标放低一点,可以多看看那些中小厂,先积累点经验再跳槽也是相当不错的。

本文作者:小小黑
本文链接:https://lonelyenderman.top/archives/829
版权声明:本站采用 BY-NC-SA 进行许可。转载请注明出处!

评论

  1. 李华
    Windows Edge
    2年前
    2023-2-09 14:07:58

    谢谢博主分享

    来自山西
  2. echeverra
    Windows Chrome
    2年前
    2022-10-20 17:44:55

    棒棒哒!

    来自天津
    • echeverra
      Windows Chrome
      2年前
      2022-10-24 11:06:57

      来自陕西

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(*^▽^*)
 ̄﹃ ̄
(╯‵□′)╯︵┴─┴
(~ ̄▽ ̄)~
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
( ͡° ͜ʖ ͡°)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
つ﹏⊂
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
(´▽`ʃ♡ƪ)
w(゚Д゚)w
(๑•̀ㅂ•́)و✧
(#`O′)
凸(艹皿艹 )
o(≧口≦)o
≡ω≡
(*/ω\*)
○| ̄|_
(⊙ˍ⊙)
Σ(っ °Д °;)っ
o( ̄ヘ ̄o#)
<( ̄︶ ̄)>
(。・∀・)ノ゙
(o゜▽゜)o☆
╥﹏╥
ヾ(´・ω・`)ノ
😂
😀
😅
😊
🙂
😍
😘
😜
😝
😏
😒
🙄
😳
😔
😫
😱
😭
😶
🌚
😣
🤨
😣
🤐
😪
🤤
🥵
🤮
😨
😱
😓
🤬
👴
🤡
🙈
💊
🙏
🤺
💩
👻
🙌
🖕
👍
👫
👌
🙏
👀
🐒
🔪
Source: github.com/zhheo/Sticker-Heo
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
Heo
花!
上一篇
下一篇