2019双非本科秋招总结(结尾附海康深信服面经)

以下是我的一些秋招经历,希望可以给你带来收获

先分享下学校的经历,嗯?在校期间成绩一般,没有挂过科,玩点LOL,相信代表绝大多数。日子过得倒是挺滋润,但对奖学金我觉得是个遗憾,理论成绩还行,就是综测懒得加,有没有和我一样的,很反感准备各种文字材料的?没办法学校这些机构就这样一点都不便民。大一凭着预科的经历混了个协会的干事,打打球,再玩了一年游戏。如果你是大一的或者你认识大一的或者将要读大一的,敲重点:一定一定一定要好好学习,争取保研(参加实验室,参加比赛,大学的考试也简单,这一切都很轻松)。大二去了下学校的电赛实验室,培训几天,最终感觉是后面来的有点碰灰的感觉,就溜了(年少。。。)。那就另谋出路吧。偶然看见校外的实验室刚好招新,还是害怕以后找不到工作就去了。真的很感谢这次选择,后面找工作用的知识都是从这里学到的。大三就跟着学一些Linux下C编程,还去过学校的蓝桥杯培训听过几天课,最后报名还有几百块的报名费,感觉花钱买奖状,溜了,毕竟还是学到了一点东西,好歹知道STL是啥。大四9月份就找到工作了,很无聊,这个时候想怎么玩就怎么玩了。可惜我没钱,所以有了这篇博客,哈哈哈哈哈哈,感谢贫穷让我们相遇。当然,以上只是学习线。好吧,切入正题

2019年2月底,迫于生计,最终决定放弃考研(其实是没报太大希望),渣渣的我在暑假还没到来就开始了秋招的准备。因为在学校学了一些嵌入式的岗位,所以期望工作是嵌入式方向的。距离正式的秋招还有6个月的时间,嗯,心情复杂。打了一波鸡血之后,还是要做个简单的规划:
3月份-6月份:首先做技术还是需要一定的项目经历的,也可以是一些比赛经历,毕竟你要比别人多学一点,才能脱颖而出嘛。所以这段时间,我就在上面提到的实验室,做自己的项目。刚好巩固了一下以前学的知识,晚上也可以看看技术文章啊,视频什么的。
7月份-9月份:秋招即将来临,需要打起精神来准备了。准备的东西:

1.个人简历

作为你和企业交流的第一面,简历很重要。首先从风格上来说,做技术的最好简约一点,打印也用彩印的,这样给人的印象会还不错,我就从海投网上面找了个模板。简历的内容的可以从项目经历,可以从项目介绍和项目实现展开。再到学校经历比如你当了什么干部,做了哪些事情,通过这些体现的是一个人的沟通协调能力,这也就是往往一些技术也到位的但找工作却没有那些技术一般沟通能力很强的人找得好的原因;接着可以写一些专业技能,可以贴一下我的。自我评价可以要可以不要,主要是我没有什么拿得出手的获奖经历占占位置,有的话可以写获奖记录。
2019双非本科秋招总结(结尾附海康深信服面经)_第1张图片
2.笔试

编程也是衡量一个程序员能力的重要标准。有些看似简单的问题,你觉得一两行代码就可搞定的,实则你手撕的代码要考虑到各种情况,比如对输入合法的检验,整型溢出等问题。这个可以通过刷题和看书来弥补,刷题网站可以先刷牛客上面的一些选择题和剑指offer,然后就可以在LeetCode上面刷编程题,有些公司很喜欢问上面的题,比如说深信服(面试基本上全是上面的题)。同时两本书也要看一下,程序员面试宝典和剑指offer。我说一点常考的一些题。如果你是嵌入式岗位的话,一般就是一些字符串处理之类的,还有进制转换,实现链表,队列,双向链表的插入删除,还有一个二分查找等。如果是软件开发的岗位的话,就要涉及到一些常见的算法。动态规划类的最喜欢考,还要处理输入输出,还要AC,简直就是噩梦。笔试中还有一些数据结构的内容,都很基础,比如出栈序列,二叉树的前中后序。面试中都会深入的问一下数据结构。
说完编程题,我们再来谈谈选择题和填空题:选择题大概就是一些操作系统,计算机网络,Linux基础,C/C++基础问题。填空题嵌入式最喜欢让你写一个宏定义,只要掌握宏替换只是简单的字符替换,注意加括号就可以了。题型不好说,还是说知识点吧。const修饰的变量,定义变量(包括函数指针,指针函数,指针数组,数组指针这些),指针和引用的区别等。(还是有时间做个思维导图吧,很乱)。

3.技术面试

一般分为针对简历上面的基础内容考察,项目经历,手撕代码。
基础内容又可以从Linux,C/C++,操作系统,计算机网络展开。上来自我介绍然后问你两个简单的问题热身。一般有结构体对齐,sizeof和strlen的区别,野指针和内存泄漏的概念,怎么解决?掌握C和C++内存布局,知道你定义的变量在哪个区。C++的话多态怎么实现的必问,分为编译时的多态和运行时的多态。编译时的多态是编译器根据函数形参的不同编译出不同函数名,具体可百度。运行时的多态要从虚函数表指针和虚函数指针出发,虚函数表怎么更新。析构函数为什么要是虚函数?C语言函数传参压栈的过程,问的深一点会问你C语言变参怎么实现。
Linux系统一般考察一些查看状态的命令和一些调试会用到的,如查询Linux内核版本,查看CPU,查内存,查磁盘;调试用到的:查看进程占用的端口,占用的文件,占用的地址空间,使用的系统调用和收到的信号,查看CPU实时信息。网络管理命令分一些公司,比如设置DNS,添加路由这些。
项目经历你一定要准备的东西,首先你肯定要描述清楚你的项目,你怎么做的,最好描述清楚自己学习的过程,是怎么一步一步完成一个模块,怎么一步一步改进的,为什么选择你使用的技术。然后就是问你一些细节的东西,不要仅仅只是停留在项目的表面。还有就是项目遇到的 最大的问题是什么,你怎么解决的,这里就是在考察你的分析问题和解决问题的能力。还有就是你的项目还有哪些可以扩展的,这个很重要。
计算机网络相关的也就TCP和UDP的区别,熟悉对应的报文头。TCP连接的三次握手和断开的四次挥手。TCP的滑动窗口协议。ARP协议在哪一层?网络编程的流程以及客户端和服务器怎么判断已经断开,长连接和短连接。有些互联网公司还喜欢问这种问题,给你一个很大的样本一般都是几十亿,让你找出一个或几个怎么做?可百度布隆过滤器。还有负载均衡。
操作系统部分就是进程和线程的区别,进程间通信,线程间通信,线程同步。fork和vfork的区别。
一般面试撕的代码都比较简单,都是让你实现一个函数,只要注意我上面说的问题。只要题刷的多了,都是很简单的。注意先要思考,问清楚题目的要求,不要上来就写代码。
技术面试碰到不会的问题也不要着急说不会,你可以从你现有的知识上面分析一下,有可能就对了。你就可以这样说,这个我我不清楚,但我觉得什么什么,因为什么什么。
数据结构篇
那些互联网的软件开发对数据结构要求很高,不能只是一些简单的链表队列,可以参考我画的这个图
2019双非本科秋招总结(结尾附海康深信服面经)_第2张图片2019双非本科秋招总结(结尾附海康深信服面经)_第3张图片
4.HR面试
到了这里就不用太担心了,说明你的技术肯定是OK的。可以去知乎上面找一些常见的问题,准备下答案。注意这是个聊天的过程不是背书。说话自信一点,也可以根据面试官的状态适当皮一下。

分享下剩下的思维导图

设计模式
2019双非本科秋招总结(结尾附海康深信服面经)_第4张图片
C++
2019双非本科秋招总结(结尾附海康深信服面经)_第5张图片
一个大疆的笔试早早地来了,其实前面已经有好多提前批都已经过了,我才后知后觉。提醒下,多关注招聘网站,校招海投网和牛客。经过这个我才知道学历不行是真的直接拜拜。好好准备下,到了八月底基本上都开始网申了,其实内推码这个东西内啥用还给别人谋福利。开学了就是宣讲会陆续开始了,其实建议去宣讲会你会听到来自各个公司的讯息,对未来行业的发展也有个预期。做完笔试等待面试,我大概就面了深信服,CVTE,海康,宏电,联发科。每次面完之后一定要及时总结,不然就忘了。哈哈哈哈哈,好像就这几家,最终拿到了海康和联发科的offer,选择了联发科。毕竟做嵌入式的我不是太熟悉硬件。开开心心的结束秋招,国庆回家玩他个半个月。上天总是会眷顾那些心态乐观的人,滋滋。

分享下深信服和海康的面经(一个软件开发,一个嵌入式),可以从中对比出区别
深信服优招一面
C语言:
memcmp函数比较结构体的大小
程序运行的内存布局
定义全局变量int[1024]和int[1024]={1,2,3}在生成的二进制文件中有什么区别
野指针
你觉得每个公司的编程规范中会怎么解决野指针问题,有哪些工具可以检测vargrind
数据结构:哈希表,哈希函数,怎么解决冲突
二叉树的三个遍历,后序怎么实现
逻辑题:跳台阶问题
计算机网络:
网络编程中用的事件模型,select和epoll的区别
什么是大小端,两个设备间怎么解决大小端的问题,有哪些函数。
网络传输中,默认的传送字节是14**,但接收方只能接收1300左右怎么解决,就是tcp流量控制,具体是哪个字段。。。。
Linux:怎么解决一个进程占用太多的cpu,软链接和硬链接的区别
深信服优招二面
网络阻塞和非阻塞的区别
select模型
堆结构的实现
动态规划解决:求一个字符串中的最长子串
搜索二叉树怎么用,查找一个数据的时间复杂度
平衡二叉树有哪些,说一个就问一个怎么实现。。。
怎么算一个表达式的值,有括号呢
你的一个进程跑蹦了,怎么解决,怎么排查
一个后台程序出问题了,但没挂掉,怎么排查问题。我说strace命令,然后问怎么用。。
软链接和硬链接的区别
说一下malloc函数,malloc(0)返回啥
给一个结构体分配后,它是怎么存储的
知道内存分配时的结构链表不。。
TCP的滑动窗口是怎么弄的
4次断开连接,发送相应的报文进入什么状态
发送fin为1,seq后,还可以接收和发送数据吗
一个linux系统启动的过程,引导程序怎么找到操作系统。。
优招拜倒在了算法,最后正式秋招又投了,HR给了口头offer最后还是无缘,看来是上天要保我狗命。一面有难度就是一些LeetCode上面的原题,说个思路就让我二面了。二面对着笔试的问了你做错的题,写了个strncpy。还问了些C底层的东西,因为我做的嵌入式的项目。莫名其妙又让我过了。
海康威视(有了联发科的offer底气也不是很足的样子,卑微)
简单自我介绍

给你一个字符串复制的函数找错,大概就是一些\0,指针,循环,还有一些目的地址空间不足的问题

看了一下简历熟悉Linux下基本命令是吧?

查看内存信息:free cat /proc/meminfo
查看Linux内核版本:cat /proc/version
查看进程占用的文件:lsof -p pid
查看进程占用的地址空间:pmap pid
看我不是很熟悉,好下一段落

熟悉Linux下C编程是吧,来聊聊你理解的文件IO

我说了什么read,write,lseek之类的,然后怎么操作的
read是阻塞的吗?我说都可以,怎么设置非阻塞
怎么读取文件的一行
fread和read的区别
write会将数据写到磁盘吗?
写到磁盘由谁控制,我说操作系统,就问我自己要写到磁盘怎么办?(fsync)
我就瞎说了一手ioctl函数,提到了块设备,然后就扯到了字符设备驱动,问我什么块设备,什么是字符设备。。。答不出来

C内存部分

一张白纸画一下内存布局,画完了,说了说3-4G是内核空间,放了些环境变量啥的,还给他扯了下mmap在堆和栈开辟一坨空间
然后问我mmap怎么用,用在哪里(只有mmp,不该装X)
定义的结构体放在哪里(我说不占空间,没有指定变量时确实不占)
函数放在哪里
define的放在哪里

多线程部分开启

怎么设置线程的优先级具体
线程的堆栈大小怎么设置,默认多少–2M
一个系统最多可以起多少的个线程
怎么保证主线程创建的子线程先执行
操作系统怎么保证高优先级的线程先执行
创建线程时需要注意什么,很懵问了下具体要注意啥,说是从函数传参上答,好吧不知道,我只知道void *
扯完线程来说说进程
子进程会继承父进程的信号量吗?文件锁呢,文件描述符呢?
会继承父进程的代码段吗?
扯了下写时拷贝技术,然后说了fork和vfork,下面自然而然就是fork和vfork的区别
我说vfork会保证子进程先运行,就来书上看到的如果不调用exec函数的话修改父进程的数据会出现不可预知的问题的,
还说有的地方说会出现段错误,已经被标准给丢弃了
就让我给他讲为什么会出现段错误,为什么不行,还说他用的时候就没问题(错了错了,没你经验丰富)
迎合下好吧,我用的时候也没问题

网络编程部分

画一下那个客户端和服务器连接的流程图
怎么过滤一些IP地址不让它连接(郭工说可以在通过判断accpet中传入的那个结构体指针指向的内容)
什么是短连接,什么是长连接
提了一下心跳包。。然后心跳包由谁发,怎么发,是由协议栈发还是用户发(喵喵喵)
怎么用socket短连接和和长连接–扯了下setsocketopt

还有什么想问的吗?没了,放过我吧(卑微)

然后居然给我说了句出去等二面吧,就这里我喜欢。。
2019双非本科秋招总结(结尾附海康深信服面经)_第6张图片
祝愿大家都找到自己理想的工作

你可能感兴趣的:(码农也要常总结鸭)