算法和面试

  因为去年坑爹的创业失败了,所以在年底就预备开始找工作。对于公司我最看重Google,13年底面过一次,挂得十分惨烈,这次正好有时间,就打算好好准备一下。面试的核心在于算法,对于Google尤为如此。刷题是不用说的了,我的leetcode注册了两三个账号,刷了七八遍,脑子都刷糊了,当然受益也不少,还有geekforgeeks作为补充,只要把这两个吃透,基本上所有的面试都可以轻松拿下。

  在经过了三个多月的精心准备,年后我信心满满的从家里回到北京的住处,与Google的HR约好面试时间,然后就是电话面试,一面二面,提交HC、等结果,足足折腾了一个月,结果HC不让过,原因是发挥不稳定。当然从我的角度来看肯定不是这样,我只能说Google面试官的水平层次不齐。之后我才真真开始考虑国内公司的一些职位,可惜因为公司和项目背景的原因,我无法拿到自己想要的面试机会,这个问题足足烦了我快一个月。最后碰到一个比较好的猎头耐心推荐,精心修改简历,还有对HR切切恳求(也不知道是哪一个起作用),总算有一个部门负责人和我通话,立即约好现场面试时间。问了问面试过程,主要考的还是白板算法,这下我就放心了。

  算法在面试中的作用就不用多说了,算法同样可以让人在写代码的时候更加有自信,即使你不去使用特定的算法或是数据结构,它的潜在影响还是很大的。这也是为什么很多面试官喜欢问算法,因为面试是随机性很大的过程,而算法是最客观的衡量一个人的能力的方法。因此我将会在后面慢慢在后面记录我觉得有意思的算法和它们的解决方法。

时间: 2024-10-07 01:23:00

算法和面试的相关文章

C/C++ 数据结构之算法(面试)

数据结构中的排序算法. 排序算法的相关知识: (1)排序的概念:所谓排序就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来. (2)稳定的排序方法:在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的.相反,如果发生改变,这种排序方法不稳定. (3)排序算法的分类(分为5类):插入排序.选择排序.交换排序.归并排序和分配排序. (4)排序算法两个基本操作:<1>比较关键字的大小. <2>改变指向记录的

C/C++ 排序&amp;&amp;查找算法(面试)

一.排序 1.冒泡排序 1 void BubbleSort(int array[],int n) 2 { 3 int i=0; 4 int j=0; 5 int temp=0; 6 int flag = 0; 7 for(i=0;i<n - 1 ;i++) /*外循环控制排序的总趟数*/ 8 { 9 flag = 0; /*本趟排序开始前,交换标志应为假*/ 10 for(j=n-1;j > i;j--) /*内循环控制一趟排序的进行*/ 11 { 12 if(array[j] < ar

算法数据结构面试分享(一)- 解决算法问题的一般方法

先看一道题目: 给你一个整型数组,我想找出来最大的两个数,能帮我写一个算法吗?     拿到这个题目,大家会怎么想到用什么方法解决吗?我见过很多同学的回答是,先排序,取最大的两个数就好了.那么接下来我们的问题就变成了如何给这个整型数组排序了.我们有很多种方法,冒泡排序,快速排序等等.很有可能面试官就让你开始写具体的排序算法了.当然,有些有经验的同学可能会说了,排序我直接调用sort方法就好了哈.  其实,这两种情况都没有对错之分,只是没有敲开面试官的心扉,也没有给人眼前一亮,让自己脱颖而出. 再

计数排序 - 算法数据结构面试分享(五)

数组排序问题 - 计数排序 昨天我们留了一道题目"给你一个整型数组,里面出现的数在[0-100] 之间,能用最优化的方法帮我排序吗". 1. 确保我们理解了问题,并且尝试一个例子,确认理解无误. 这是一道排序算法题,我们学过很多排序的算法.不一样的是,它给定一个额外的条件,数组里的每个数字都在1-100之间.如果我们采取传统的排序算法,这个条件我们好像用不上.大家在面试的时候如果发现有条件没有用上,基本上我们给出的算法可能不是最优的,或者我们没有解决它最原始的需求.举个例子{50, 4

算法数据结构面试分享(六)数组排序问题(2) - 计数排序

数组排序问题(2) 昨天我们留了一道题目"给你一个整型数组,里面出现的数在[0-100] 之间,能用最优化的方法帮我排序吗". 1. 确保我们理解了问题,并且尝试一个例子,确认理解无误. 这是一道排序算法题,我们学过很多排序的算法.不一样的是,它给定一个额外的条件,数组里的每个数字都在1-100之间.如果我们采取传统的排序算法,这个条件我们好像用不上.大家在面试的时候如果发现有条件没有用上,基本上我们给出的算法可能不是最优的,或者我们没有解决它最原始的需求.举个例子{50, 46, 5

【求职】字节跳动2019校招机器学习算法工程师面试

面试问题总结. 问题:1. 自我介绍.2. 介绍了一下自己简历上的项目.3. SVM详细原理.4. Kmeans原理,何时停止迭代. 算法题:1. 一个随机整数产生器产生[1,5],如何设计一个产生[1,7]的随机整数产生器.解法:设k1,k2属于[1,5], 生成k3 = 5*(k1-1)+k2+1, 则k3属于[1,25], 将k3分成两个部分,[1,21]和[22,25]. 判断,若属于[1,21], 则令op=k3%7+1,op属于[1,7], 否则丢弃. 2. 给定一个旋转的有序数组,

19年上半年算法岗位面试经历

总结:介绍算法模型一般从模型要解决的问题场景入手.然后介绍模型建模的思路,使用的损失函数,对损失函数的优化如何求解这几块.最后介绍下算法模型的优点和缺点. 一.小米面试(凉凉)——一面1小时,二面40分钟 1. 数据结构很重要(重要指数10颗星) 2. 编程题: (1)a = [1, 2, 3] b = a[:-1] 这一步做的是什么,还可以怎么做,另外一种方法和这种方法那个时间复杂度更低 a.pop(2) # 3 视频名字:(N) name   变金精刚  变形金刚  大黄蜂 query:(M

十种常见的排序算法,面试算法必考

1.冒泡排序 已知一组无序数据a[1].a[2].……a[n],需将其按升序排列.首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变.再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变.再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值.这样处理一轮后,a[n]的值一定是这组数据中最大的.再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的.再对a[1]~a[n-2]以相同方

机器学习算法岗面试常见问题

过拟合原因 数据:数据不规范,数据量少,数据穿越,统计特征用到了未来的信息或者标签信息 算法:算法过于复杂 解决: 1.将数据规范化,处理缺失值,增加数据量,采样,添加噪声数据 2.正则化,控制模型复杂程度, 3.early stoping,减少迭代次数,减少树的深度, 4.学习率调大/小点. 5.融合几个模型 L1和L2的区别 1.L1是Lasso Regression,表示向量中每个元素绝对值的和:L1范数的解通常是稀疏性的,倾向于选择数目较少的一些非常大的值或者数目较多的insignifi