我的找工作经历

发布时间:2019-07-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了我的找工作经历脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本文是面试经验总结,功利成分过大,不适合用于技学习
本文适合像我一样方向明确,没有牛逼经历的普通学生
本文的大部分观点是我个人的总结,不具有普适性,仅供参考

看了一周249的新剧,觉得应该给这几个月的划上一个句号。是对自己的总结,也希望能给其他人带来一点点经验吧。

先说一说自己的经历吧。从三月份开始,大厂实习面试全部失败,去了本地某国际知名厂商的云计算销售部门,去干了一个月,觉得离研发有点远,就辞了(后来证明,该公司的名号,还是在校招筛简历的过程中,帮了不少)。此时已经到了六月底了,痛定思痛,自知在机器学习算法方向只懂一点皮毛而已,积累不够。开始给自己定了后台开发的方向。

七月和八月从csapp后部分开始,自己写了写简单的httpserver,读了muduo码和书籍,以及若干linux后台的书籍(后面我会列一下)。然后进入九月,正式校招。
战果:

  • b厂内推三次挂,校招同一个部门三次挂

  • a厂集齐5个已回绝

  • t内推去深圳挂,校招不过笔试。

  • 360内推到hr面后挂,校招不给机会

  • 小米内推一面挂,校招不过笔试

  • 华为提前批offer。

  • 新美大offer

  • 大疆offer

还有若干不过笔试,没有面试机会的以及实习的面试过程,就不列出来了。一开始我就说本文适合普通学生,根本就不是什么成功的经验,其实是我自己失败的总结。如果你才刚上大学或者研究生,请抓紧搞各种比赛和项目。如果你还有几个月就面试了,不妨看一看,兴许有一些有用的地方。

我准备从自我定位、知识储备、面试流程这几个方面谈一谈

自我定位

实习的时候,我尝试面试了机器学习相关的算法岗位,很快我意识到,自己并不擅长算法,只懂一点CNN的皮毛,sigmoid是怎么推出来的,完全不知道。这个时候离校招只有不到三个月时间,我要么从基础开始,过一遍机器学习的理论,要么朝后台方向,自己撸项目,补基础。显然,我觉得自己搞工程项目更容易一点,也更感兴趣一点,于是选择了工程项目(然后后来我简历上的唯一亮点却是关于机器学习的,这给后来的面试带来了不少困扰)。

面试了这么多,我感觉面试官选人的流程一般是:

  1. 过去有没有牛逼的经历(acm等牛逼竞赛,牛逼论文,牛逼实习等等

  2. 方向是不是对口(过去的项目经历,跟目前的岗位匹配度和深度)

  3. 基础知识(操作系统,网络,算法,相关业务知识)

这三点重要性我认为是按照先后顺序排列,举个极端点的例子:你拿过acm金牌然后去面试后台开发岗位,不清楚TIME_WaiT状态的含义,面试官应该不会刷掉你。但是如果你没有那个奖,然后也没答出来,我想你多半就很危险了。

然而对于大部分人而言,比如我,第一条根本就没有。这个时候,给自己一个定位就很重要了,大部分面试官都会考察到你的基础,但是不排除有部分面试官当你第二条不满足的时候,直接就岗位不符合了,尤其是到了终面,第三条大家都满足了,前面两条就显得非常重要了。

第一条是硬伤,第二条勉强还可以补一补,前端开发、后台开发、算法、机器学习、安卓ios等等,你一定要选一个方向,针对性地学习,各个公司岗位可能名字不一样,但大的方向就那么几个。可以结合自己的兴趣、理想和以往的经验,综合考虑一下,如果不清楚岗位具体做的事情,可以问问认识的师兄师姐。

知识储备

开机器学习算法类,研发类的基础知识基本都是差不多的,这里主要以后台为例讲一下,基础知识该怎么去准备。

1.算法和代码基本功

没刷过题的同学,不建议直接去刷leetcode,leetcode现在已经有将近400道题了吧,我们的时间有限,直接刷,有点盲目。我建议从剑指offer开始,至少一遍(可以配套lintcode的阶梯训练),越熟练越好。然后是链表和二叉树,到leetcode选择链表和二叉树的tag,全部刷完。链表和二叉树的题目,面试的概率实在太大,如果这类题目没有答出来,会比较惨。

刷题的时候,不建议一道一道没目的地刷。可以利用好leetcode的tag,分类别来练,比如这周练DFS,有点感觉后,再选下一个主题DP,就跟高考的复习差不多。这里再推荐一下左神的代码课,牛客网上有他每一周的直播视频,讲得很细,也推荐大家买一下他99的课(优惠码AlamdgS),内容针对性很强,但是感觉讲解没有直播好,我买的时候大部分内容我已经刷过了,算是给左神补个钱了,不亏。

总得来说,面试不会涉及很复杂的数据结构和算法,除非是你自己跟面试官提。如果你上面的基础内容都差不多了,可以去hihocoder,它里面有一个hiho一下,分专题,难度要大一些,像线段树,各种平衡树等。hihocoder就是正规的ACM形式,不给数据,新手刷起来很费时间,感觉用户较少,讨论区也经常找不到有用的信息。

最后说一点就是,平时无所谓,去面试之前,一定要花点时间去练一下白板写代码,毕竟还是会遇上手撕爬虫、手撕TCP分包黏包这类的面试官。简单的一定要写出来,复杂的至少写个大概思路。

2.后台知识

这部分内容,我就列一下我从图书馆借过的书单吧.

  • csapp(时间紧的话,重点后半部分)

  • TCP/IP详解. 卷1(TCP状态图要能画出来)

  • UNIX网络编程. 卷1,卷2 (选重点内容)(以上三本基础,必读

  • Linux多线程服务端编程 陈硕 (muduo源码,很适合学习)

  • Linux高性能服务器编程 (了解,可作参考)

  • Linux内核设计与实现 (书很薄,可用于快速了解linux)

  • 深入Linux内核架构(选择对应的章节,细读。比如文件系统,内存管理)

  • 深入理解Nginx : 模块开发与架构解析 (翻了下目录,看了部分小节)

  • 高性能MySQL (看前面一两章,面试到mySQL可保命)

  • SGI STL源码剖析 (重点前三章)

  • effective C++ && more effective C++

  • c++ PRimer 最新版

  • 深度探索C++对象模型 (以上四本,c++方向越熟越好)

两个月时间,不可能全部看完。我的方法是选一个项目(muduo),学到什么,再去看什么。其次就是去翻面经,针对性地补。

再补充一点,平心而论,C++方向的岗位真心很少,如果时间还早,建议入java。不过,校招不太重要,我后来拿到的offer全部是java岗。java方向的我觉得上面书单里面,除了后面四本,都是适用的。

3.笔试

单独把笔试说一下,因为现在的笔试都变成了在线笔试,简历不出彩的情况下,笔试还是很重要。不过笔试,真是有一种深深的无力感,时间短,范围广,各个公司套路都不太一样,毫无章法可循。不过感谢牛客网提供了一个地方,至少有个地方可以刷一刷。我做了那么多笔试,很惭愧,感觉都是凭概率过的。

我的建议就是,先去牛客网上刷几套公司的题,然后感觉自己哪个方面弱一点,先看看书,然后选择某一个类别的题目针对性训练。尤其是智力题,我觉得是可以刷一刷的,后来我发现有大概率碰上原题。

然后是编程题,这个只能练,多刷leetcode。把我前面说的基础部分搞定过后,可能还不够,很多情况下,笔试的编程题会比面试还难。不过后来我听说大家都是组队的。。我就不多说了(其实是我连组队的人都找不到。。。)

最后说一点,就是校招过程中,会有大量的冲突。你有可能一天遇上三次笔试,这个时候要做出选择。不仅是放弃冲突,如果有连续三场的笔试,我也建议放弃一场,因为人的精力是有限的。根据自身的情况,如果我去连续搞好几场笔试面试,太累了,可能哪一场都搞不好。我现在回想有好几次笔试没过,就是因为精力不够。

面试流程

面试这个东西,真的是天时,地利、人和一个都不能少。运气很重要,实力也很重要。首先,面试是什么?面试是销售你自己的过程。所以你应该主导整个面试流程,而不是等着面试官来问你。为什么会有自我介绍?自我介绍其实就是去讲你会什么,擅长什么,最好顺带讲一下简历里面的重点内容,而不是简单的讲一下名字和学校就完了。如果自我介绍信息量不大,面试官就会从简历里面自己挖一些东西问,由于你简历用词不当等原因,很有可能问到你的死穴。

整个面试下来,像百度美团等这些大厂面试流程更正规、扎实。美团中规中矩,百度最难(写个多线程计数器让我利用CPU多核下面的 cache Orz...)。腾讯基础考得并不难,项目经历被鄙视。华为面试最水,华为感觉不怎么看面试,看你是不是有一等奖学金,论文这些。大疆不知道什么鬼,有可能是缺人,面了两次,时间都很短。我后面会把我遇到的面试题列一下,供大家参考。

我面试到后面,基本上都能够进入二面或者说是终面。然而在终面或者总监面的过程中,总是因为过去的经历太过薄弱然后挂掉了,也有可能是我不会吹牛,我是觉得真心无解,硬伤。百度内推到终面的时候,问我研究生的研究方向以及成果,我blabla说了一推,明显感觉到面试官不太满意。然后到校招的时候,也是终面,面试官挑我机器学习项目的亮点,讲完了过后,他就问我到底是想做机器学习还是工程研发,觉得我研发项目经验偏弱。Orz...所以我一开始就讲定位,基础都过关了的时候,方向真的太重要了。

再说一点就是,当你觉得面试官觉得对你失去兴趣的时候,这个时候你可以拿着你提前准备好的筹码(前提是你的这个筹码一定要精通),跟他讲你某一个点很熟。比如你熟悉linux内存管理,你熟悉C++多态等等。现在想想,腾讯终面的时候,面试官说我的经历太弱,没有实际的,大型的项目经历,我应该再争取一下,讲一下我的基础,说不定会有转机。

其他

前面说了那么多,都是我自己经验,有一些通用的地方,也有很多我自身的特点。更详细的面试历程,各位可以去网上搜面经,自己多总结。找工作的这几个月,很考验你信心和毅力还有体力。没事多给自己灌灌鸡汤,offer总会有的。

部分面试题目

这里只是一部分面试的内容,有很多我当时没有记下来(比如美团,大疆的我就搞忘记了),不过面试多了,你会发现,题目会有很多重复。

百度运维部(内推):
你的@R_777_2034@
最好的一段代码实现经历
linux 子系统模块
最熟悉的数据结构和算法
客户端突然挂掉,然后服务器这边会有什么反应
线程加锁有哪些需要注意的地方

地铁问题:
统计地铁 某一秒的 人数
数据:
时间都到秒级别
进站时间 出站时间 卡ID

然后怎么设计一种结构,可以提供查询 某一秒的 人数, 查第 3 第5秒的人数
方法:
1、用一个数据a[606024]来表示每一秒的变化人数,比如第10秒,进入100人,a[10]+=100,出站20人,a[10]-=20那么最终a[10] = 80。
2、再用另外一个同大小数组b[0] = a[0] b[i] = b[i-1] + a[i] 就是第I秒前的总人数
重点: 考虑每秒变化的人数!

数据库查询慢 会做什么,数据库引擎 inonodb
linux 文件系统 ext2 ext3 inode节点
进程通信的方式
怎么避免死锁
shell 查看CPU 哪些进程的使用
/proc里面的内容和原理,多长时间刷新一次?实际上不是刷新。
sed,awk使用
全局变量初始化 和成员变量的初始化

40亿个 unsigned int 给10w个数 查找是否存在 布隆过滤器
SVM的含义和,优缺点
怎么对用户建模,推荐广告
TCP 启动阶段,做了哪些事情
拥赛控制具体算法
HTTP 协议的字段 cache-control last-modify 这些字段的意义

百度运维部校招:
写一个多线程计数器,比原子操作更快的方式,利用多核CPU的 cache, 定义局部变量, 然后手动合并一下(不会写)
写memcpy 函数, char 字节拷贝效率比较低,然后效率最高的拷贝, 寄存器最多能一次拷几个字节,有没有不经过CPU的拷贝?
两个进程访问同一个页面,怎么弄?
二面:
手写爬虫题:找到所有百度IP,抓百度所有网页,判断所有网页是否相同,再抓取所有百度LOGo
IP题,题目记不得了,当时用得线段树,没手写出来,讲了思路
推荐系统怎么弄?
运维系统里面,怎么找异常的情况

小米内推:
GET POST区别
C/C++的区别
java与C++的区别
HTTP状态码
ajax原理。
poll与epoll的区别
vfork fork pthread_create 下面都是clone, 它们的区别, 进程结构 task_struct
linux内存管理,分页,页大小,怎么分配连续的内存,kmalloc
线程间同步
进程间通信方式,区别优缺点
linux处理器调度,进程调度,实时进程,非实时进程,实时进程的调度算法
信号量,kill 。发送的信号是 什么? 终止信号能不能忽略, 进程kill之后,资源回收问题
数据库ACID
红黑树
MVC怎么理解?
php与.net平台的区别
数据库建立索引需要注意的地方
jquery 选择器
(就一次面试,面了这么多东西,最后还挂了。。。)

360内推:
一面:
函数对象和普通函数的区别
poll epoll的区别
二叉树遍历、快排、链表遍历,选一个写
线程加锁 需要注意的地方
二面:
树和hash表的区别(速度、修改频率、内存)
进程挂了,怎么办?守护进程
链表有环,不用快慢指针的方法
select 大小限制,是多大?
ping,trACERoute,udp
各种协议的原理

华为提前批:
什么是无锁,无锁队列
设计模式相关
为什么要用线程

好未来:
一面:
C++多态原理
菱形继承虚函数表,是调用哪个虚函数
c语言去实现多态,结构体包含实现继承,函数指针实现虚函数
实现sizeof double 思路: 内存数组,然后相减
二面:
TCP分包粘包,写代码
堆排序,写代码

脚本宝典总结

以上是脚本宝典为你收集整理的我的找工作经历全部内容,希望文章能够帮你解决我的找工作经历所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。