11.17更新:
签约完工作有快两个月时间了,总觉得有些东西还是记录一下比较好。后面拿了小米华为网易的offer。写下来一些东西更想是总结一下。有很多次的面试感觉真是差了那么一点点,在技术的掌握和知识面上完全可以做的更好,却在暑期的这段时间里没有抓住,时间短是一方面原因,更多时候是自己有很多东西没有意识到,在去年这个时候开始如果更能抓住一些本质的问题,无论看书还是掌握问题都能有更多进步,所以说前面有些时候看的书没有真正的掌握起来。
总结以下内容:
1.计算机体系结构内容
《深入理解计算机系统》这本书是之前就买了,作为一个非科班专业的学生,我觉得计算机素养是一定要有的,作为以后的后台开发,这本书要吃透,但是我看这本书的时候很多东西都略过去了,总觉得有些东西不重要,从处理器端到内存到硬盘,很多东西需要看。这里遇到鹅厂面试官问决定硬盘读取速度的原因有哪些?阿里面试官问cache是个什么东西?这些很基础的内容还是从计算机素养来积累。这里面还涉及了很重要的问题就是理解一段程序从代码到真正运行起来发生了什么,编译,连接,运行,总之这个地方还是好好学习的 。
2.数据结构与算法
我觉得这个没有什么捷径,需要一点点理解,做题运用,去年这个时候也是买了课,每次课程连着上四个小时左右,学了一部分没学完,leetcode刷题有150道左右,牛客也是刷题了一部分,但理解还是不到位,如何把各种数据结构的代码烂熟于心,常用算法和问题解决思路能流畅的用代码写出来,是一门硬功夫。更多时候,面试问的是一个抽象出来的实际问题,并不会拿现成算法或者数据结构考默写,这里需要不断强化。
3.linux
关于操作命令部分,用的也是不多,读研阶段科研都是Windows写代码。这部分内容也是需要积累出来的。
4.网络
网络连接协议,这部分有重点学习过,也写了一些程序,做了一个相关的项目,其实关于网络连接过程中的多个状态如果深挖一下,又会到了一个新的内容---Linux内核,包括命令部分,都可以在底层内核部分找到对应的点,select epoll epoll在内核里如何进行实现的,还有内存部分,高端内存等等,Linux内核学明白能把一些东西更能理解一些现象。网络里的内容更像是一层计算机原理上的应用。
5.语言
C++的学习,简单的C++只是浮于表面,去理解语言对不同的东西操作方式,也是基于计算机原理来的,例如手动申请释放内存,堆内存的管理,STL里针对内存管理又是怎么做的,一些关键字的作用,为什么要有这些关键字,类的继承,面向对象的本质,侯捷老师的几本书都有很详细阐述。
6.数据库
说到数据库,我觉得这次秋招也算是吃了数据库的亏,一直没拿出时间系统的学习数据库相关内容,包括SQL语言部分,数据库慢慢补充。
7.HTTP nginx
这些作为提升的亮点,是接下来要用学习和掌握的,相关工具的使用,web dubgger, git, 一些工具的使用
先写这么多,后面随着平时学习在逐渐补充接下来要加强的东西。
记录一个小片段的吧9.10号接到网易广州那边的通知面试,让12号下午现场面试,接下来赶紧定了机票酒店,酒店还是定错了在一个很比较远的地方,也是第一次去广州,11号下午学校这边有完美的现场笔试,在阶梯教室写了卷子,赶紧骑着车子到大巴站点去机场,六点多到机场找个安静的小餐馆买了一份超难吃的餐,准备七点的百度的线上笔试,事实做的很不好,然后夜里一点多到住的地方---棠下村。白天吃了楼下两次KFC,然后准备去珠江那片面试,状态并不好,前后有一个小时,上来写了一个题,后面一直聊算法和设计题,几次被问的不知道往下怎么说,结束后感觉一般。一个人去看了小蛮腰,后面换乘地铁,出来下来暴雨(实时上没多久,躲在地铁站多一会就能停),被淋的透透的,在公交上接到完美面试通知,本想多停留两天,还是买了第二天七点的票,吃了正宗的砂锅粥和肠粉。。。第二天早上五点出发,十点到了西安,又是在机场找个KFC做了大华的笔试,做完笔试赶紧坐大巴回去,下了大巴紧接着去了完美的面试,这就有了下面几个面试题。。。面试完三点多,那段时间真的是太赶了。
一、如何确定一个圆与矩形是否相交
https://blog.youkuaiyun.com/lkysyzxz/article/details/53193485
二、给定一个坐标代表一个人所在位置,多个坐标代表公交车站位置,如何快速确定离他最近的公交车站位置的坐标
思路:把当前人的位置移动到原点,再把所有的点按照相同方向平移。
则问题转化为求vector<vector<int>> location;
平方和最小的那个点。遍历一遍
三、给定一个ip字段范围与对应的所属地区的一张表,问:在给定任意一个ip地址下返回其所属地。
开始 结束 所属地
1.211.166.1 1.211.166.8 上海
...
168.1.10.98 168.1.10.233 广州
任意给定一个IP 1.211.166.50 返回所属地上海
将ip字段转换为数字,根据数字范围比较求其对应地址
分情况讨论:
当字段没有重叠 :
通过排序开头的数,会把一个数落在其范围内,通过二分查找获得对应的地域名称。
有重叠的情况:
先比较开头地址获取一个字段范围,再比较结尾字段范围,获取另一个字段范围,进而把当前字段与两个字段比较,可得两个地域名称。
四、给定一个先序遍历结果的字符串,建立二叉树
A
B D
C
ABC###D##
BTree* creat_tree(){
BTree* temp;
while(*p==' ')p++;
if(*p=='#'){
p++;
return NULL;
}
if(*p!=' '){
temp = (BTree *)malloc(sizeof(BTree));
temp->str=*p++;
temp->lchild=creat_tree();
temp->rchild=creat_tree();
}
return temp;
}