面试

从外包到互联网,加油,打工人!

99封情书 提交于 2021-02-04 16:16:11
Hello,大家好,我是walking。很久没有更新了,十分抱歉。 因为前几个月在忙两个事情,一个是练车考驾照,一个是准备面试,所以就没有时间更新啦。经过不懈的努力,终于,在20年11月份从待了3年多的东家离职去到了一家中型互联网公司,并且在12月底经过三个多月的努力拿到了驾照! 我跳槽啦~ 今天就说说跳槽这件事吧。 我是某“双一流”高校计算机相关专业毕业的,从大四一整年到2020年11月份三年多的时间都在一家公司,说起来不怕大家笑话,做的外包。本应早早跳槽脱离外包的我,一待就是三年,硬是没有鼓起勇气离职。 其实原本打算20年年初跳槽的,赶上了疫情,期间面了四五家也有通过的,但还是做传统软件的,给的工资也比现在高不了多少就拒绝了,大点的公司也没去尝试,一是准备的不好,算法很弱,二是项目经验较少,没什么亮点。所以就不再面了。 老老实实待着吧,边上班边学习。平时都是自己找资料学,偶然间在B站找视频时看了到一个系列的视频,看了一集老师讲的挺好的,深深吸引了我,到末尾才知道是某线上进阶课的公开课,有点心动,想报名,因为平时自己学零零散散的没有章法,看人家介绍的课程体系还挺完善就果断报了名。于是开始了每周三天的晚上俩小时的学习之路。 几个月后,就是国庆前夕,鼓起勇气向老东家提出了离职,原因是回老家发展(我估计很多人都是这个理由🌚🌚)。经理前后找我谈了几次话,本意就是不想让我走,说了好多

【每日算法】【刷穿 LeetCode】22. 括号生成(中等)

半世苍凉 提交于 2021-02-04 14:18:52
点击 这里 可以查看更多算法面试相关内容~ 题目描述 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()"] 提示: 1 <= n <= 8 DFS 解法 既然题目是求所有的方案,那只能爆搜了,爆搜可以使用 DFS 来做。 从数据范围 1 <= n <= 8 来说, DFS 应该是稳稳的 AC。 这题的关键是我们要从题目中发掘一些性质: 括号数为 n ,那么一个合法的括号组合,应该包含 n 个左括号和 n 个右括号,组合总长度为 2n 一对合法的括号,应该是先出现左括号,再出现右括号。那么意味着 任意一个右括号的左边,至少有一个左括号 其中性质 2 是比较难想到的,我们可以用反证法来证明性质 2 总是成立: 假设某个右括号不满足「其左边至少有一个左括号」,即其左边没有左括号,那么这个右括号就找不到一个与之对应的左括号进行匹配。 这样的组合必然不是有效的括号组合。 使用我们「20. 有效的括号(简单)」的思路(栈)去验证的话,必然验证不通过。 掌握了这两个性质之后,我们可以设定一个初始值为 0 的得分值,令往组合添加一个 ( 得分值 + 1,往组合添加一个 ) 得分值

阿里一面,给了几条SQL,问需要执行几次树搜索操作?

本秂侑毒 提交于 2021-02-04 14:00:02
前言 有位朋友去阿里面试,他说面试官给了几条查询SQL,问:需要执行几次树搜索操作?我朋友当时是有点懵的,后来冷静思考,才发现就是考索引的几个基础知识点~~ 本文我们分九个索引知识点,一起来探讨一下。如果有不正确的话,欢迎指出哈,一起学习~ 面试官考点之索引是什么? 面试官考点之索引类型 面试官考点之为什么选择B+树作索引结构 面试官考点之一次索引搜索过程 面试官考点之覆盖索引 面试官考点之索引失效场景 面试官考点之最左前缀 面试官考点之索引下推 面试官考点之大表添加索引 01 面试官考点之索引是什么? 索引是一种能提高数据库查询效率的数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。 索引一般存储在磁盘的文件中,它是占用物理空间的。 正所谓水能载舟,也能覆舟。适当的索引能提高查询效率,过多的索引会影响数据库表的插入和更新功能。 02 索引有哪些类型类型 数据结构维度 B+树索引:所有数据存储在叶子节点,复杂度为O(logn),适合范围查询。 哈希索引: 适合等值查询,检索效率高,一次到位。 全文索引:MyISAM和InnoDB中都支持使用全文索引,一般在文本类型char,text,varchar类型上创建。 R-Tree索引: 用来对GIS数据类型创建SPATIAL索引 物理存储维度 聚集索引:聚集索引就是以主键创建的索引,在叶子节点存储的是表中的数据。 非聚集索引

Event Loop我知道,宏任务微任务是什么鬼?

久未见 提交于 2021-02-04 08:44:53
在介绍宏任务和微任务之前,先抛出一个问题。相信大家在面试的时候,会遇到这样的相似的问题: setTimeout( function (){ console.log( '1' ) }); new Promise( function (resolve){ console.log( '2' ); resolve(); }). then ( function (){ console.log( '3' ) }); console.log( '4' ); 请说出控制台打印的数据,很多小伙伴经过深思熟虑之后,会自信的说出答案:2、4、1、3。 但是说出答案之后往往会发现面试官并没有出现很满意的表情。这是为什么呢?接下来让我们一步一步的探讨面试官不满意的原因。 JavaScript事件循环机制 首先还是说说JavaScript的事件循环机制,大家都知道,js的执行任务分为同步任务和异步任务,那么他们的执行情况是怎么样的尼?执行的时候,会优先执行同步任务,当执行中遇到了异步任务,会暂时将异步任务扔到异步队列中,继续执行后面的同步任务。当所有的同步任务执行完成之后,再执行刚才扔在异步队列中的任务。一直循环执行,也就形成了我们JavaScript的Event Loop机制。 可能纯文字的介绍大家看得有点绕,下面引入一张图片来帮助大家理解JavaScript事件循环机制: 看完这个图,各位小伙伴可能会觉得

重新认识【时间、金钱、自我、人际关系】

本小妞迷上赌 提交于 2021-02-04 06:31:59
《 认知突围 》 前言 : 史铁生说 “人与人之间的差距比人和猪之间的差距还大”。 大多数人对某一问题或现象无能为力,这是由于对人生的几个 关键问题认识模糊 从而无法作出正确选择,而且概念不清就 不能形成清晰严密的通识知识体系 ,在遇到关键问题就会吃大亏。 人们往往会把利益关系的感情当做真情实感, 当 你明白后就不会轻易感动 。 懂了这么多道理还是过不好一生,终究是没有践行。没有践行的原因可能有三种: 1. 你根本没懂道理,也不知道怎么用; 2. 你懂了但是结果对你不够有吸引力; 3. 你懂了,但你觉得逻辑不强,得不到你想要的结果。 不舒适是成长必须经历的。 底层逻辑 :世界道理一共也就那么多,千头万绪总有个源头,提升认知,就是正确认识底层知识。 第 1 章 先打自己的脸,才能深度思考 (1). 记忆和表达 都是经过大脑加工的, 都不是绝对的客观事实 。所以我们对自己、对别人的评价、别人对我们的评价都是主观的。过分在意别人的看法是不明智的。 (2). 懒惰、放纵、自制力差本质上是 认知能力 受限,看不到某事带来的巨大收益,因此不足够产生动力。而有人能清晰的看见未来回报,所以努力。 所以认知低级的人不算是聪明人, 认知也是一种很重要的智慧 。认知高的人知道自己不知道什么。 (3). 机会无处不在 ,认知受限就会分辨不出机会,能力不足就抓不住机会。 (4). 你认为百利无一害的事情

你对加班怎么看?

只愿长相守 提交于 2021-02-04 06:29:17
作为程序员,加班是家常便饭,如果哪个程序员说自己不加班拿高薪,那有这几种可能: 他在吹牛逼; 他进的国企事业单位,活少; 它本身能力非常强,强到不需要加班就能完活; 公司快倒闭了,没啥活干。 大多数程序猿,每天的生活还是围绕着 加班or不加班 进行的。 我们在面试的时候,跟技术聊天,很多时候会有意无意地问到公司加班的情况。如果你想看一个公司的加班严不严重,一般能从技术的精神状态来判断。 有一次我面试的时候,遇到一个面试官老哥,跟我聊天的时候经常走神,我发现不对劲,问是不是我回答的不好,导致他缺乏对我了解的兴趣。他说不是,真实的原因是他刚通完宵,紧接着就安排了这场面试,非常疲惫。我当时心想,这哥们是个狠人啊!但是转念一想,也挺辛酸的,要不是被逼无奈,谁会顶着猝死的风险为公司拼命呢? 生活,往往就是这样,有的人选择 高薪高负荷 ,有的人选择 低薪安逸 ,还有很多人没得选择, 低薪高负荷 的也大有人在。 刚毕业的应届生,没什么项目经验,技能因人而异,总体来说掌握的也不是很好,那么应届生的优势在哪里? 我想 年轻、成本低、有激情、能加班 或许是很多用人企业选择应届生的理由。 作为应届生自己,想通过工作实战项目迅速提升自己的编码能力、丰富自己的项目经验,甚至很多时候,他们不在乎自己的薪资多少,只求能 多学点东西 。 那么高强度的加班换来的是什么?真的能学到很多东西么

Java常见问题收集

╄→尐↘猪︶ㄣ 提交于 2021-02-04 04:01:18
转载处:https://blog.csdn.net/jackfrued/article/details/44921941 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象 :抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承 :继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。 - 封装 :通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。 - 多态性 :多态性是指允许不同子类型的对象对同一消息作出不同的响应

【日更计划035】数字IC基础题

我是研究僧i 提交于 2021-02-04 03:03:14
不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我 欢迎大家加入2022届数字IC交流群,QQ群号 1060380138 上期答案 [067] 独热码在设计中有什么好处? 独热码中,状态转换时,会有两位改变,一位清零,一位置一。它的优点时,不需要进行解码就能知道当前的状态。独热码会使用更多的触发器,但是更加少的组合逻辑,在时序电路中不需要用解码逻辑进行区分状态。 [068] 在任何一种编程语言中,静态(static)变量和自动(automatic)变量,局部(local)变量和全局(global)变量之间有什么区别? 区分这些名词需要两个概念,作用域(scope)和存储持续时间(storage duration),前者定义了在何处可以访问变量,后者定义了在何时可以访问变量。 按照变量的作用域可以区分局部(local)和全局(global)变量。局部变量的作用范围有限,尽在声明它们的代码块中可见。而全局变量在声明后在程序的任何位置都可见。 存储持续时间可以区分自动(automatic)变量和静态(static)变量。静态变量的生命周其一直持续到程序结束,因此可以始终访问。自动变量具有有限的生命周期,只能持续到程序离开定义的块或者作用域为止。 例如:在以下的systemverilog代码中,global_int被声明为类成员,并且在整个类中具有全局作用域

招聘数据分析师,月薪30k,这个要求高吗?

拈花ヽ惹草 提交于 2021-02-04 03:01:43
这两天面试了几个数据分析岗的候选人,结果一个都没录用,感触颇深。 这几个候选人大都干了好今年的数据岗,结果一问经历,不是只会跑数,就是只会做表, 做过的项目寥寥无几 。 但我这个岗位基本要求是要有至少两个完整项目经验。 于是我试图用真实场景去测试他们的数据分析能力,看看有没有培养空间,结果都让我很失望—— 最基础的拆解业务场景,制定数据指标,以及通过什么样的工具和流程去分析结果都说不上来,有的敢胡说八道,有的甚至直接就被问住了。 1 为啥别人都能拿30k 以上 不禁感慨,很多人挂着“数据分析师”的 Title,其实就是个 人肉跑数机 。 几年的工作的下来,当初和你一起入职的可能都跳了两三个公司,月薪30k、40k了,自己连个像样的简历都写不出来, 年纪越来越大,说不慌那是假的。 职场上很多事就是如此,可能一开始别人只比你努力 10%,但是经年累月,和你的差距就越拉越大,直至看不到身影。 打了这么多年工,这样的事见了太多太多——为啥有的人能脱颖而出,有的人就碌碌无为一生? 刨去运气、风口等因素,我思考的答案是:进阶能力。 就以数据分析岗为例,虽然挂的都是“数据分析师”的头衔,工作内容可能迥然不同。 小公司数据分析专员: 通过SQL数据库取数,利用Excel制作各种报表,生成各种报告给各部门及领导过目。 中型公司数据开发工程师: 有了熟悉的业务方向,可能是金融,可能是教育

我画了25张图展示线程池工作原理和实现原理,建议先收藏再阅读

元气小坏坏 提交于 2021-02-04 02:53:41
为什么要使用线程池 平时讨论多线程处理,大佬们必定会说使用线程池,那为什么要使用线程池?其实,这个问题可以反过来思考一下,不使用线程池会怎么样?当需要多线程并发执行任务时,只能不断的通过new Thread创建线程,每创建一个线程都需要在堆上分配内存空间,同时需要分配虚拟机栈、本地方法栈、程序计数器等线程私有的内存空间,当这个线程对象被可达性分析算法标记为不可用时被GC回收,这样频繁的创建和回收需要大量的额外开销。再者说,JVM的内存资源是有限的,如果系统中大量的创建线程对象,JVM很可能直接抛出OutOfMemoryError异常,还有大量的线程去竞争CPU会产生其他的性能开销,更多的线程反而会降低性能,所以必须要限制线程数。 既然不使用线程池有那么多问题,我们来看一下使用线程池有哪些好处: 使用线程池可以复用池中的线程,不需要每次都创建新线程,减少创建和销毁线程的开销; 同时,线程池具有队列缓冲策略、拒绝机制和动态管理线程个数,特定的线程池还具有定时执行、周期执行功能,比较重要的一点是线程池可实现线程环境的隔离,例如分别定义支付功能相关线程池和优惠券功能相关线程池,当其中一个运行有问题时不会影响另一个。 如何构造一个线程池对象 本文内容我们只聊线程池ThreadPoolExecutor,查看它的源码会发现它继承了AbstractExecutorService抽象类