个人找工做经历

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

看了一周249的新剧,以为我应该给这几个月的划上一个句号。是对本身的总结,也但愿能给其余人带来一点点经验吧。前端

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

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

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

  • a厂集齐5个已回绝jquery

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

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

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

  • 华为提早批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总会有的。

部分面试题目

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

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

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

而后怎么设计一种结构,能够提供查询 某一秒的 人数, 查第 3 第5秒的人数
方法:
一、用一个数据a[606024]来表示每一秒的变化人数,好比第10秒,进入100人,a[10]+=100,出站20人,a[10]-=20那么最终a[10] = 80。
二、再用另一个同大小数组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分包粘包,写代码堆排序,写代码

相关文章
相关标签/搜索