数据结构与算法
这一块在笔试、面试的代码题中考核较多,其中常考的数据结构主要有:数组、链表、队列、栈、Set、Map、哈希表等,不同数据结构有不同的方法以及储存原理,这些算是技术岗的必备知识。算法部分主要分为两大块,排序算法与一些其他算法题。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
排序算法根据考频高低主要有:快速排序、归并排序、堆排序、冒泡排序、插入排序、选择排序、希尔排序、桶排序、基数排序、Timsort这十种,这类考核点要么是算法的时间、空间复杂度、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。
- 二叉树层序遍历
- B 树的特性,B 树和 B+树的区别
- 尾递归
- 如何写一个大数阶乘?递归的方法会出现什么问题?
- 把多维数组变成一维数组的方法
- 知道的排序算法 说一下冒泡快排的原理
- Heap 排序方法的原理?复杂度?
- 几种常见的排序算法,手写
- 数组的去重,尽可能写出多个方法
- 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
- 知道数据结构里面的常见的数据结构
- 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
- 合并两个有序数组
- 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)
比如 2017 年 7 月毕业,但工作经历是 2018 年 10 月份开始写,毕业后的 1 年多是空白,是毕业后留校一年、是做其他行业一年、是待业一年、是兼职一年、是有什么不太好的事情不方便写…面试官是没有这么多的耐心来猜测的,有时候简历多的筛选不过来,就只好把这份简历先放一放。
比如 2017 年 7 月 2020 年 7 月在 A 公司,2020 年 1 月到 2021 年 3 月在 B 公司,中间重叠了 7 个月,是写错了,还是这中间打两份工,还是 A/B 公司是一家公司下面的两个子公司…
比如项目的开发时间轴跟工作经历的时间轴对不上,关于工作经历这块,如实填写,不要造假,都是要谨慎填写的。
另外,工作经历这里可以简化的写,主要是标注什么时候在什么公司呆了多久,如果在里面有重大的晋升、表彰等荣誉也都可以写进去,比如这是我从前团队的一个童鞋的简历截图(公司名是化名):
有些童鞋,觉得自己岁数偏大(比如 31 岁),或者觉得自己的教育背景不好(比如大专或者二本),会在简历上故意不填写出生年份或者年龄,或者教育经历不填写,或者把教育经历用最小的字,写到简历的最最后,这都是不推荐的,首先给面试官留下 「耍小机灵」「不自信」的印象。
建议如实填写,如果不合适,那么从简历筛选这时就不必浪费双方后面的时间,如果合适,也不会因为填写了,而把一个候选人彻底否定,这世界不是非黑即白的,每个独立的候选人的成长经历都是独一无二的,就像前文说的,跳槽是一个碰运气的事情,也许会遇到很资深的面试官,也许会遇到一个极不尊重候选人的面试官,但无论如何,简历上需要诚实以对,这也是对自己过往经历的一种直接面对,不逃避自己的过往,能客观大胆面对过去的人,心态上就赢在起跑线。
有童鞋会担心,如果不这样隐瞒,会拿不到面试机会,但这样隐瞒就能拿到 Offer 么,也许从一些小概率上看,比如一些中小厂不是特别规范的团队,也许或睁一只眼闭一只眼,但对于中大厂来讲,这样做反而胜算更低了。
有些童鞋,Github 上只有 Fork 别人的项目和自己写的小 Demo,博客上只有零散的几篇文章,或者会放上微博/B 站这样的社交媒体主页,但里面并没有什么内容,然后在个人评价这里说,自己喜欢社交、对产品有热情、有良好的学习习惯,面试官首先看到的就是 「连最基本的客观评价自己的意识都不太具备」,简历上如果放,一定是放经得起挑战的,放让别人眼前一亮的,放自己确实在长期经营且有沉淀的内容,这样才会带来加分,否则只会扣分。
有的项目是容易看懂它的业务的,特别是偏基建的项目,比如 H5 可视化搭建平台,而有的就写一个 H5 商城,看不出什么行业、用户是谁、大概的功能有哪些,无法预判这个项目的复杂度。
或者是项目介绍写一大段,超过四五行,一个项目一般两行就能描述清楚它的定位和大概的场景了,如果写的特别多,说明这个项目也许候选人并不够熟悉,无法简洁的描述出来。
如果项目背后的业务比较敏感的话,也可以从技术的角度来形容这个项目中你重点参与的角色和内容,如下图:
上面列举出来的几项失误是我在简历审核中常见的,那么除了避免上述失误,我们还应该在哪些方面给我们的简历增光添彩呢?
编程语言,你的个人成就和水平。我有时会看到一些简历,里面的工作描述就只有一行话,像这样:
- 在一个3人组成的团队里开发一个 e-mail 插件。
筛选者在阅读你的简历时心里都有选择标准, 1. 工作的挑战性如何, 2. 你的工作跟我们公司有多少相关性,所以你需要把工作描述清楚。更合适的写法应该是这样的:
- 用C++语言实现一个用来执行自动备份的 Outlook e-mail 插件。有三个人一起开发这个任务,其他两个人分别负责编写备份存储服务器 和产品的打包、分发给300,000个客户。
如果你写了太多的鸡毛蒜皮的事,它会拉低你整个简历的质量水平。你丝毫没有必要写上”我按时完成了这个任务,并达到了预期目标。” 你不说,读者也会默认这样的,而你把一个不是什么成就的事情当成一个成就写出来反而会弱化你的简历。
有时我会看到这样的一个“主要工作内容”介绍:
实习生, XYZ 公司 * 优化ABC组件代码,使其执行效率提高20%。* 用C++实现ABC组件的前端程序。* 整理文档,做一些行政工作。
如果这最后一条不是像前两条那样有影响力,那就去掉它。即使只写了一条也不会有问题——只要它是能吸引人的信息。
筛选者都是用自己的感觉来判断你的工作的性质和价值的,你要写一些量词,奖励(公司内部或外部的),新闻报道,工资涨幅,以及其它的可测量的事情。不要用 你自己的主观意识去描述。这样既能抬高自己,又不会显得你很傲慢。
不要写“快速的开发出了令人赞叹的软件”,应写成“通过3周的努力使软件的效率提高了25%”。不要写成“每当其他人搞不定时,我都被叫去去救火”,应该写成“我先后被派往了三个进度严重滞后的项目,并分别帮它们度过难关。”
同样,不要做荒诞式的浮夸,就像下面这样:
通过组织了一次冰淇淋Party,让几个团队之间实现了融洽的合作。
我有个朋友叫 Melody (化名),我认识她有10年了。她开发的一个产品让她的XXX公司赚取了几百万元,获得了很多的行业赞誉,这个软件成了她们公司的旗舰软件。我去上海时,看到高速路旁边树着一排她们的产品的广告牌。然而,当我看她的简历时,上面只写道:
- 公司产品的技术负责人,此产品为用户执行X任务提供企业级解决方案。
你要写出你获得的荣誉和奖励!
如果你在业余时间完成了一些有技术挑战性的项目,或者还有一批可观的用户(几百号),这些也一并列在你的简历里。
总结
=============================================================
从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
个人将这段时间所学的知识,分为三个阶段:
第一阶段:HTML&CSS&JavaScript基础
第二阶段:移动端开发技术
第三阶段:前端常用框架
-
推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;如果因为我的笔记太过简陋不理解,可以关注我以后我还会继续分享。
-
大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。
g_convert/644efd4ddd0f8d43535f1982ec0da6e4.png)
-
推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;如果因为我的笔记太过简陋不理解,可以关注我以后我还会继续分享。
-
大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。