面试

技术人的互联网大厂情节

吃可爱长大的小学妹 提交于 2020-11-24 13:33:36
什么是大厂,狼厂、狗厂、鹅厂、猫厂……,各种简写的字母也经常被大家提及,如BATJ,TMD,FLAG,GAFATA等,这些企业位于行业的头部,与之相对应的福利待遇、发展前景都比较诱人。所以网络中充斥着各种面经、内推、内部分享等等,不管是有意还是无意,无形中就引领了一种文化——大厂文化。另外,大厂也是创业者的摇篮,中小微公司高层的活水源。 马太效应,大者会更大,特别是顶尖的几个,几乎是雄踞状态。 什么算高深技术,简单的CRUD自然算不了,当属高并发、高负载、自动扩容、分布式大集群、智能推荐、自动化等等,你平时能用到这些高大上的技术吗,一般是用不上,缺少场景,你非要往里套也并非不可,但几乎看不到效果,投入产出比太低。那大家都为什么还要去学,为了掌握高深人技术,为了职业发展走的更宽更远,技术迭代更新快,不学似乎意味着被淘汰。 题图 from unsplash 为什么想进大厂? 好处看得见:技术学习更有深度,有很多牛人请教学习,平台大机会多,业务场景丰富,福利待遇较丰厚,视野开阔,结交人脉,能力背书,(为创业打基础)等等。 坏处也显而易见:工作压力大(国外的大厂估计会轻松一些),工作内容单一。 想进就能进吗,也不那么容易,关键在于能力深度能不能够到,技术能力广是一个方面,更多的还是靠专业深度,钻研的足够深刻是基础,加以灵活运用,不然面试第一关就被刷出局。进入渠道可谓很多

MySQL 是怎么死锁的?

感情迁移 提交于 2020-11-24 13:22:22
Java技术栈 www.javastack.cn 关注阅读更多优质文章 最近总结了一波死锁问题,和大家分享一下。 Mysql 锁类型和加锁分析 MySQL有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度 算法: next KeyLocks锁,同时锁住记录(数据),并且锁住记录前面的Gap Gap锁,不锁记录,仅仅记录前面的Gap Recordlock锁(锁数据,不锁Gap) 所以其实 Next-KeyLocks=Gap锁+ Recordlock锁 死锁产生原因和示例 产生原因 所谓死锁 <DeadLock> :是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。表级锁不会产生死锁.所以解决死锁主要还是针对于最常用的InnoDB。 死锁的关键在于:两个(或以上)的Session加锁的顺序不一致。 那么对应的解决死锁问题的关键就是:让不同的session加锁有次序 产生示例 案例一 需求

重磅消息|民工哥公众号更名啦.........

巧了我就是萌 提交于 2020-11-24 10:28:00
点击上方“ 民工哥技术之路 ”,选择“置顶公众号” 有趣有内涵的文章第一时间送达! 细心的小伙伴肯定在这之前就已经发现了,公众号的LOG换了,公众号简介文字也变更了。的确,改变就在不经意间发生了,如同这个时代一样,如同生活一样,它悄无声息。 民工哥的公众号于2016年07月08日注册并开通,第一篇文章: 哥的侃(说) ,马上快两年了,时间过的真快。 由于去年结束杭漂回撤霸都,实在太忙,更新放慢。 想看民工哥的故事请戳下面的文字 民工哥的十年故事续集:杭漂十年,今撤霸都 不管怎么样,在这还是要感谢一直以来支持与关注的小伙伴们,是你们,让我有了一直坚持写下去的动力,再次感谢。 再来聊一聊为什么改名? 公众号从最开始的名字: 友侃有笑 ——> 民工哥Linux运维 ——> 民工哥技术之路 ,其实也是个学习与发展的过程。 如同我们在人生的道路上,不同的阶段,有不同的目标,做着不同的事情一样。期间,同样会 不断去修正方向, 这样,你会离你所预定的目标越来越近, 走的弯路也会越来越少。 公众号写着写着,慢慢的发现,小伙伴们对知识的的需求不再只有Linux系统这一个面,或者说也不能仅仅只有这一个面。另一个方面就是,在读者当中,不再全是运维人员,只能说都是IT技术人员(有运维、DBA、JAVA开发、前端开发、安卓、IOS开发、测试、自动化开发、架构类的等等)。 更名的主要原因, 其一

TCP 三次握手、四手挥手,这样说你能明白吧!

試著忘記壹切 提交于 2020-11-24 10:22:19
点击蓝色“Java高级架构”关注我哟 加个“星标”,干货推送! TCP协议全称为: Transmission Control Protocol ,是一种面向链接、保证数据传输安全、可靠的数据传输协议。为了确保数据的可靠传输,不仅需要对发出的每个字节进行编号确认,还需要验证每一个数据包的有效性。每个TCP数据包是封闭在IP包中的,每个一IP包的后面紧跟着的是TCP头,TCP报文格式如下: 源端口和目的端口字段 TCP源端口(Source Port):源计算机上的应用程序的端口号,占 16 位。 TCP目的端口(Destination Port):目标计算机的应用程序端口号,占 16 位。 序列号字段 CP序列号(Sequence Number):占 32 位。它表示本报文段所发送数据的第一个字节的编号。在 TCP 连接中,所传送的字节流的每一个字节都会按顺序编号。当SYN标记不为1时,这是当前数据分段第一个字母的序列号;如果SYN的值是1时,这个字段的值就是初始序列值(ISN),用于对序列号进行同步。这时,第一个字节的序列号比这个字段的值大1,也就是ISN加1。 确认号字段 TCP 确认号(Acknowledgment Number,ACK Number):占 32 位。它表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。其值是接收计算机即将接收到的下一个序列号

做Offer收割机,很难吗?

匆匆过客 提交于 2020-11-24 09:57:36
正所谓跳槽天天有,offer哪家强? 跳槽容易,但想拿大厂的offer可不那么容易。很多小伙伴一直叨叨要跳槽,大大小小的公司面试了很多,但却很难拿到一个满意的offer,要么package太低,要么就是面试被虐。 经过多次面试失利之后,方能明白什么叫基础不牢,地动山摇。 面试官随便针对一个知识点深入考察一下,就回答不出来,这样还怎么能通过面试? 那么大厂到底面试到底需要哪些技术功底呢?这个就多了,不同公司的技术要求也不一样,但是相同的点在于,大公司对于技术的要求都不会很表面,必然会在一定广度的基础上要求有一定的深度。 这些深度技术包括但不限于以下知识: Ok Http 、Retrofit的源码 理解 代码 架构设计和代码重构能力 自 定义View以及高级动画 效果的实现 热修复、插件化的原理和使用 代码压缩和包体积压缩 …… 当然,对于技术的深耕就像是修炼武功,必须日积月累方能有所成就,这是一个相对辛苦且漫长的过程。 但!是!如果你观看了网易云课堂的Android高级开发视频教程,一定会让你的修炼过程事半功倍。 最重要的是,这些视频资料 全部都是干货 , 并且完全免费 ,这还有什么好犹豫的吗? 扫码添加助教小姐姐微信领取 免费资料,先到先得~ 说句实话,现在网上关于Android的免费学习资源很多,基本上都是一些入门的、基础的、甚至是落后的技术点讲解内容。

Java 语言中十大“坑爹”功能!

半世苍凉 提交于 2020-11-24 09:55:45
作为一门面向对象的编程语言,Java凭借其简单易用、功能强大的特点受到了广大编程爱好者的青睐,伴随着开源社区的推波助澜,Java语言更是席卷全球,势不可挡,在世界各地都有Java技术的从业者,它也常年高居编程语言排行榜的首位,足以表明Java的强悍与王者之风。 然而,即便是如此强大的编程语言,也有很多“坑爹”的功能,稍不注意,我们就会掉入坑里,轻则遭到同事的嘲笑和鄙视,重则造成悲惨后果而不得不跑路。 当然,坑爹这个词加上了双引号,因为大部分时候,都是由于我们不够熟练、违反我们的常识才造成了令人不愉快的后果。 今天我们就来梳理一下Java中最“坑爹”、最违反常识的功能点,以排行榜的方式发布,以飨读者。说明一下,本文中的代码基于JDK8来编译实现。 switch必须加上break才结束 对于多重分支选择,一系列的if-else-if语句会让代码的可读性变差,建议使用switch语句来代替,然而switch case中的分支判断,必须加上break语句才会中止其它case的执行,比如: int count = 1; switch(count){ case 1: System.out.println("one"); case 2: System.out.println("two"); case 3: System.out.println("three"); } 上面的代码会输出: one

python 之lambda表达式

匆匆过客 提交于 2020-11-24 09:45:14
点击蓝字关注我们 在学习python的过程中,lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda? lambda表达式算是python一种比较方便的语法了,主要作用是代替简单的函数,免去了编写函数的烦恼,语法也更加地简洁。下面就简单介绍一下lambda的使用场景。从本质上来讲,lambda是一个函数,可以接受参数输入。 lambda 基础用法   lambda表达式的基础用法,做简单的加减乘除,或者格式修改操作。 funca = lambda x: x+1 funca(2) out:3 lambda和if结合使用   lambda表达式既然和函数一样那么也可以用逻辑控制流,用if去做判断,返回我们想要的东西。 funcb = lambda x:x+1 if x==1 else 0 funcb(1) out:2 funcb(2) out:0 lambda表示式和for循环结合使用   跟if不一样,lambda表达式里用for循环会报错,但是也可以for循环一起用,只不过比较复杂,用了for循环生成的是一个由函数组成的列表 。 funcc = [lambda x: x+j for j in range(5)] [f(1) for f in funcc] out:[5, 5, 5, 5, 5]    但是从上面的输出来看

offer收割机也有方法论

家住魔仙堡 提交于 2020-11-24 09:42:35
秋招的战火就像这夏天的温度一样炙热,陆陆续续很多学弟学妹问我秋招的注意事项,作为温暖型大叔的我此刻必须出场了。 看仔细了,接下来龙叔就把这offer收割机的秘密都告诉你们。 如果你还没 点关注 的话,记得点个关注,防止下次找不到我了。 秋招时间 秋招 指的是下一年即将毕业的同学,会在前一年的 秋季 参加全国用人单位的用人招聘。比如今年的秋招就是为21年毕业的同学准备的。 秋招一般分为提前批次、正试批次。 提前批次 是一些发展比较好的用人单位,一般都是大型企业,提前到市场上来挑选好的人才。能通过提前批拿到offer的都是各方面略胜一筹的。提前批的时间一般在 七月初至八月中上旬 ,想走提前批的人把握好这个时间段。 校招正式批 面向全国下一年即将毕业的所有毕业生,就是为我等万千求职者准备的,如果你在提前批不如意,不用担心,这里有你所需。正式批的时间一般为 八月下旬到当年年底 结束。 例如今年,整体的校招时间可以定位为:2020年7月~2020年结束。 秋招的重要性 秋招的重要性,就好像高考填报志愿,无论你多么好的分数,错过了填报志愿时机,那都是功亏一篑。 如何成为校招offer收割机 校招有很多注意事项,比如 简历怎么写? 没有项目怎么办? 面试紧张怎么办? 简历投出去全部石沉大海怎么办? 每次面试自我感觉良好,面试结果确实不通过怎么办? 等等很多问题。

职场篇|大公司的六宗罪

醉酒当歌 提交于 2020-11-24 08:37:50
前言 前几天写了篇介绍大公司优势的文章: 职场篇|大公司的好处 。在那篇文章里,我列举了大公司在一个人的职业生涯中带来的潜移默化的积极影响,当然,你也可以将其当成继续留在大公司的理由,或者努力奋斗争取早日挤进大公司的动力。 所谓“祸兮,福之所倚;福兮,祸之所伏”,凡事皆有两面性,大公司也是如此。 虽然大公司在制度、福利、平台等方面有着小公司不可比拟的优势,但是这并不代表大公司就没有缺陷。甚至前文所提到的大公司的优点,从另一个角度去看,也可能是大公司的软肋。 如果置身其中,只看到了大公司的光鲜亮丽,而忘记自己本只是里面的一颗无足轻重的螺丝钉,甚至对大公司的弊病置若罔闻,那么迟早会被禁锢在大公司为你建造的无形而又牢不可破的铜墙铁壁之中,动弹不得。 本文将根据我在大公司的所见所闻,谈谈大公司给职场中人带来的负面的影响,不一定正确,也不一定适用于每个人,仅仅是一家之言,我姑且一说,你也不妨一看。 罪一: 效率低下 前文说到,维持大公司正常运作的必不可少的要素是秩序,为了秩序,甚至可以牺牲一部分效率。虽然我们知道,大公司设置非常繁杂的条条框框是为了让员工少犯错误,以及尽量减少犯错误后带来的损失,但是从另一个层面上看, 不必要的繁文缛节阻碍的不仅仅是工作效率,也可能是员工积极性不高与组织反应力迟钝的罪魁祸首 。 在小公司一小时就能够完成的任务,在大公司里可能一天都干不完

差点跪了!阿里3面真题:CAP和BASE理论了解么?可以结合实际案例说下不?

血红的双手。 提交于 2020-11-24 08:27:21
本文节选自我开源的 JavaGuide : https://github.com/Snailclimb/JavaGuide (Github标星92k+!一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!) 经历过技术面试的小伙伴想必对这个两个概念已经再熟悉不过了! Guide哥当年参加面试的时候,不夸张地说,只要问到分布式相关的内容,面试官几乎是必定会问这两个分布式相关的理论。 并且,这两个理论也可以说是小伙伴们学习分布式相关内容的基础了! 因此,小伙伴们非常非常有必要将这理论搞懂,并且能够用自己的理解给别人讲出来。 这篇文章我会站在自己的角度对这两个概念进行解读! 个人能力有限。如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!——爱你们的Guide哥 CAP理论 CAP 理论/定理 起源于 2000年,由加州大学伯克利分校的Eric Brewer教授在分布式计算原理研讨会(PODC)上提出,因此 CAP定理又被称作 布鲁尔定理(Brewer’s theorem) 2年后,麻省理工学院的Seth Gilbert和Nancy Lynch 发表了布鲁尔猜想的证明,CAP理论正式成为分布式领域的定理。 简介 CAP 也就是 Consistency(一致性) 、 Availability(可用性) 、 Partition