实习分享(第二弹)
实习分享(第二弹)
编者按
欢迎大家来到19CS的实习分享会,从4月11日起,将会每天更新一位同学的面试经历和经验,也欢迎大家积极投稿。
夜雨声烦的凉经
一些个人情况:
保研边缘人,项目经历比大家只少不多(只有些划水项目);寒假刚从大数据学院的内生安全实验室润走;无实习经历;目前在本校的技术社团“凌客工坊”摸鱼orz
正 文 开 始 ↓
一开始其实是没想到要投实习的,然后上学期微软的软件工程师暑期实习提前批开招后被朋友拉去试了个水(但是因为简历交错地方直接G到正式批),在本学期初又投了字节的飞书后端,美团的前端Web工程师,然后找认识的学长内推了阿里的Java工程师。
了解实习机会的话,一般各个(大)厂在校招开始前都会开微信群,我们的院信息交流群也会发各种实习信息(u1s1这个信息群真的良心);或者可以主动出击找认识的学长学姐内推,再直接一点的可以直接去公司官网查实习信息。
下面是亿些面(shi)试(bai)经历:
1.阿里——Java工程师
阿里那边是电话面试。先上来简单自我介绍,问了一下未来的生涯规划,然后:
1)请讲一下二进制文件的执行过程(扯了一大堆编译原理,ICS相关的知识,好像把对面绕晕了最后为了拖时长硬生生去扯JVM的转化)
2)请讲一下OS中怎么把二进制文件变成进程的(不会,但和他硬扯了一下进程和程序的区别)
3)请描述一下用户态→内核态的转换过程(就xzp讲的那些,我当时漏讲了一个触发中断,其他点好像都答到了)
4)请描述一下线程和进程的区别(课上的知识)
5)什么是xie程(超纲了,弱弱表示不会。对面学长表示是个很古早的概念不会正常)
6)C++中class和struct什么区别(大致只记得默认访问修饰符和用途不一样,其他就硬扯)
7)free 和 delete啥区别?new 的东西可以free吗?(没反应过来,new会调用对象析构函数;new的应该用delete)
最后以两道算法题收尾:
1)删除链表倒数第n个节点,并返回链表头(经典双指针了)
2)实现内存拷贝函数(C好久不写了直接翻车,对面看着伪码一脸懵。坑:无法去读原内存的大小所以就是直接拷,不过考虑到安全问题也无伤大雅)
PS:不用跑测试,所以要注意打注释以及和面试官交流
结果
对面最后表示是来招日常实习的。因为下学期还不想日常实习就主动拒了……
2.微软暑习一面
算法题:
字符串S1,模式串S2,不考虑S2的顺序,找出所有匹配S2的S1的子串的起始位置。
结果
一道基础题硬是做了40多分钟,面试官估计被我整不会了都…
3.微软暑习二面
被各种狂问项目,就是各种底层知识……
当时写的时候很多东西确实是单纯面向浏览器编程,也没有彻底弄懂,确实不应该…
结果
还能期待什么呢第二天中午就感谢信了…
4.字节——飞书一面
至今记忆犹新,面完后人都麻了(物理意义上坐麻了):
操作系统:
操作系统的特征(并发,异步,虚拟,共享)
操作系统功能(内存管理,文件管理,设备管理,进程管理)
进程和线程区别
进程间通信方式(管道,共享内存,信号量)
谈谈对管道的理解
死锁的必要条件(4个)
预防死锁?(讲了银行家算法)
文件系统的组织结构?(对比数据库B+树,inode直接块一级间接balabala)
阐述一下并发和并行的区别
数据库:
B树和B+树的区别?
用过哪些数据库?
MySQL的主键索引和普通索引的区别
事务的基本特征
事务的传播机制了解吗?谈谈你对其原理的理解(?至今不懂)
谈谈你对InnoDB的了解
数据结构(JAVA):
HashMap的底层原理了解吗?(后来还给我科普了一些hash算法相关知识)
简单实现一个定长数组扩容的方式(就两倍增长,参考C++ push_back底层)
简单说一下你对Java集合类的了解吧
谈谈OOP语言的基本特性
讲一下对多态的理解;举个例子说明多态机制的意义
计算机网络:
解释一下半双工和全双工
OSI模型和TCP/IP模型描述一下,各层是干什么的?为什么要分层?(开放题)
TCP和UDP描述(可靠和快)
描述一下同一个局域网内的计算机传输数据的过程(物理层,数据链路层,传输层)
在浏览器中输入一个URL链接,然后跳转到一个网页。中间发生的过程描述一下?
谈谈你对IP协议和IP层的理解?
软件工程:
- 像抖音这种大型软件,主要由哪几部分构成?你会怎么开发抖音这种大型APP?(和面试官说还在学,就当开放题答了)
算法题:
Combination Sum(leetcode)
(挺可惜的当时其实写出来了,但是一个超小的bug愣是没看出来,我会个锤子的Java)
5.字节——飞书二面
出了一道要用树的直径做的算法题,没写出来…
And 面试官貌似对我的项目经历不太满意
回头搜了一下题目:
我爪巴
结果
吊瓶里通电——输麻了
6.美团——Web前端工程师
笔记
美团的笔试是五道算法题(技术岗),最后一道会根据岗位的不同变换风格。然后笔试成绩会作为是否能进面试环节的参考:
1.抽k张(我用集合+dp AC的)
2.旋转数组的最长子序列(也是dp,没修出来,最后只过了30%样例…)
3.切豆腐(以前DS上机做过切矩形,就不太会,现在还切三维,G)
4.区间操作(线段树好像是,还不是模板题,G)
5.XaYb(这是题目名称,应该是特殊技术岗专属题,然后我以为120min是前面四道题的没想到是整场考试的,G)
直接从聊天记录里摘来的,因为大多数题目没有名字只记住了内容orz
面试
就和面试官聊天,包括但不限于:有无前端开发经历;学了哪些框架;平时看什么前端技术博客;是否了解前端的行业发展趋势;我看你Java学的挺多的那为什么选择前端 balabala
也问了几个技术问题:
进程和线程的区别?
ES6中怎么判断一个对象是不是数组?
闭包是什么?应用场景是什么?
CSS的盒子模型
JS的变量提升是什么?
VUE在改动后不用重新运行就能刷新,为什么?
算法题水了一道最长公共前缀
结果
至今杳无音讯……(美团前端应该是三轮技术面,上面只是一面)
他甚至连感谢信都不愿意发一封,哭死QAQ
7.字节——技术中台
收到面试邀请时一脸懵因为根本没投,问了朋友知道字节有捞人的习惯
然后被狂问了各种高并发开发和数据库底层的问题,彻底没准备过这方面的…
(dpq没记下来具体问题….)
最后怒吃感谢信
总结
吐槽版
字节这场耻辱性的面试,已经成为了这两天互联网大厂最大的话题,我们来看一下前HR范XX对此的点评。一向直性子的范XX直言道,面试者这样G只怕是连脸都不要了:
– 你说技术部门,技术部门一个一个面了多少轮了,改过吗啦,换汤不换药啊。人家美团也有理由说的,我(想要)招的是什么队啊,我招的校ACM队(指北斗计划)。你是什么人啊,你叫我招?后端开发什么水平,就这么点知识量,你树的直径什么都打不出来那能过吗?过不了没这个能力知道吗?再下去的话要发感谢信了
– 另一方面来说,(对面的)面试者是备战HR面最早的
– 哦呦,谢天谢地了,你这样的面试本身就没有打好基础,你能跟我保证在二轮或者三轮技术面这样关键的面试他能过啊?务实一点,我劝你们,把自己的技术栈,基础算法题先搞懂。数据库课程PJ设计的挺好的你把它水了干嘛,问点底层原理就G,你到告诉我怎么解释呢?脸都不要了
正经版
简单来说就是算法没刷熟+项目没准备好(;′⌒`),以及很多做过的题没有真正搞懂以致于换个马甲就认不出来了。
亿点后话:
1)关于面试难度
上文的面试经历可能会让很多同学觉得面试很难而打退堂鼓,其实大部分互联网公司(即使是大厂)面试还是相对温和的,并且大部分面试官会对学生特殊照顾(如果碰上学长学姐来面甚至可能放海)
除了字节,真的难…
2)关于项目经历
有一种trick:如果你希望面试官更多问到自己的项目,就在自我介绍时提一下做过balabala;如果没啥拿得出手的项目就要好好准备基础知识了(俗称八股文),因为面试官必然会各种狂轰滥炸
不要因为害怕简历过不了而硬写各种乱七八糟但知之甚少的项目。内推途径投递一般都能过简历关,面试官也知道一般大学生能会有多少项目经历,不会故意在这点上卡简历(特殊热点部门可能除外,比如字节飞书)。但是答不好自己简历上的项目会大大影响面试官对你的印象
谨慎宣称自己了解/掌握/精通SpringBoot,因为可能有“意外之喜”。要么招来面试官对底层原理的各种灵魂拷问,要么引来其它硬核部门把你简历截了(可能看简历本来以为有点东西,面完发现是个水货,我怀疑中台那边就是这么搞我的……)
当然,大佬请放心宣称。搞不好直接把他拿下
仅代表个人观点,大家见仁见智…
如果你已经100%确认以后要直接实习工作了,请速速卷好剩下的每一个PJ(或者把以前的重构一遍)
3)关于面试题
主要复习手段就是网上各种面经,这边列几个:
几个答题小tirck:
被问到不会的问题时大胆说不会,最好能主动说自己知道其它balabala
开放题能答多少答多少,尽量把知识点展开细说
知识点密集区:
OS:进程线程区别,调度算法,死锁,进程间通信
计网:七层模型,TCP/IP模型,TCP和UDP,三次握手四次挥手相关
数据结构:二叉搜索树,哈希表(Java被问的多)
数据库:索引,事务,B/B+树
其它:OOP,编译,……
4)关于岗位/公司选择
尽量不要在前后端之间横跳,要么都投前端要么都投后端,这样方便准备
选择简历相对稀缺的岗位可以提升OC率,没有把握可以先绕开那些面试过于硬核的大厂(点名字节)
可以先确定目标岗位再有针对性的准备自己的简历(比如哪些项目要强调,哪些可以不提甚至不放)
最好提前了解目标公司和岗位,有条件的可以去找有经验的学长学姐
5)关于算法
认真刷leetcode热题,不然真的会G
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!