面试

这个神器,拯救了千千万万的苦逼程序员!

a 夏天 提交于 2021-02-08 13:25:40
多线程编程的理论 ↓↓↓ 多线程编程的现实 ↓↓↓ (无声视频) 看到这,你什么心情?………此时此刻心情”好烦烦“! 今天给小伙伴们出几道阿里必问的面试题,测测你能完美的回答几道呢? 有没有一种一定能保证线程安全的代码写法?(偷偷告诉你,真的有!) 多个线程如何保持A1B2C3等顺序交替输出? synchronized volatile的CPU原语是如何实现的? 无锁、偏向锁、轻量级锁、重量级锁有什么差别? 如何正确的启动和停止一个线程? 线程和纤程的区别的是什么?为什么纤程比较轻量级? ThreadLocal有没有内存泄漏的问题?为什么? 下 列三种业务,应该如何使用线程池: 高并发、任务执行时间短 并发不高、任务执行时间长 并发高、业务执行时间长 网上搜罗一堆答案,各式各样,唉!!! 如果你平时只有CRUD的经验,不了解 多线程与高并发 ,面对这样面试题,大概率一头雾水。 如果你真是这样,建议要拿出 2 个小时的时间,参加一次马士兵老师亲授的 《多线程与高并发》 训练营, 限时福利,本次免费学习... 诶 , 马士兵是谁? 99年清华毕业,从程序员干到CTO,一直致力于推动Java、大数据、AI生根中国,其高并发直播课程广受欢迎,有千万次播放学习。 马士兵 让骨灰级扫地神僧 马士兵老师 带你将多线程的知识系统化,帮助你理解多线程在 CPU层级的实现

彻底弄懂HashMap

╄→尐↘猪︶ㄣ 提交于 2021-02-08 09:36:26
我们在面试中, 也会经常被问到HashMap相关的底层实现, 阿巴阿巴.... HashMap的底层实现 首先它是基于数组(存储对象的引用)加链表(存储对象)实现的 当我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象 简单的模拟实现put的底层实现 jdk1.8 put(k, v){ int code = k.hashcode(); //计算key的hashcode int index = code % table.length; // 存放的数组下表 table[index] = new Entry(k, v, null); // 对应的对象 } // 第二次插入 HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 table[index] = new Entry(k, v, table[index]); // todo 底层实现 若key相同时 返回并覆盖 否则插入链表的下一个节点 if (p

面试:如何从 100 亿 URL 中找出相同的 URL?

廉价感情. 提交于 2021-02-08 08:52:03
点击“ 开发者技术前线 ”,选择“星标🔝” 在看|星标|留言, 真爱 来源: 8rr.co/FR7V 题目描述 给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G。请找出 a、b 两个文件共同的 URL。 解答思路 每个 URL 占 64B,那么 50 亿个 URL占用的空间大小约为 320GB。 “ 5, 000, 000, 000 * 64B ≈ 5GB * 64 = 320GB 由于内存大小只有 4G,因此,我们不可能一次性把所有 URL 加载到内存中处理。对于这种类型的题目,一般采用 分治策略 ,即:把一个文件中的 URL 按照某个特征划分为多个小文件,使得每个小文件大小不超过 4G,这样就可以把这个小文件读到内存中进行处理了。 思路如下 : 首先遍历文件 a,对遍历到的 URL 求 hash(URL) % 1000 ,根据计算结果把遍历到的 URL 存储到 a0, a1, a2, ..., a999,这样每个大小约为 300MB。使用同样的方法遍历文件 b,把文件 b 中的 URL 分别存储到文件 b0, b1, b2, ..., b999 中。这样处理过后,所有可能相同的 URL 都在对应的小文件中,即 a0 对应 b0, ..., a999 对应 b999,不对应的小文件不可能有相同的 URL。那么接下来,我们只需要求出这

面试:如何从大量的 URL 中找出相同的 URL?

♀尐吖头ヾ 提交于 2021-02-08 07:54:52
来源 | http://8rr.co/FR7V 题目描述 给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G。请找出 a、b 两个文件共同的 URL。 解答思路 每个 URL 占 64B,那么 50 亿个 URL占用的空间大小约为 320GB。 5, 000, 000, 000 * 64B ≈ 5GB * 64 = 320GB 由于内存大小只有 4G,因此,我们不可能一次性把所有 URL 加载到内存中处理。对于这种类型的题目,一般采用 分治策略 ,即:把一个文件中的 URL 按照某个特征划分为多个小文件,使得每个小文件大小不超过 4G,这样就可以把这个小文件读到内存中进行处理了。 思路如下 : 首先遍历文件 a,对遍历到的 URL 求 hash(URL) % 1000 ,根据计算结果把遍历到的 URL 存储到 a0, a1, a2, ..., a999,这样每个大小约为 300MB。使用同样的方法遍历文件 b,把文件 b 中的 URL 分别存储到文件 b0, b1, b2, ..., b999 中。这样处理过后,所有可能相同的 URL 都在对应的小文件中,即 a0 对应 b0, ..., a999 对应 b999,不对应的小文件不可能有相同的 URL。那么接下来,我们只需要求出这 1000 对小文件中相同的 URL 就好了。 接着遍历

【面经】离职10天,面了4家公司,我的感受...

為{幸葍}努か 提交于 2021-02-08 06:39:46
http://dy.163.com/v2/article/detail/F75J5CHO0511Q1AF.html    20 大进阶架构专题每日送达      作者:莫那鲁道   来源:http://1t.click/U4g   楼主离职已有 10 天,这段时间里除了看源码,就是投简历面试了。一共面试了 4 家,说说感受。    XX 汇   XX 汇是一家小型的电商网站,由于楼主的技术栈集中在 Java 语言这里,所以,即使楼主对并发,JVM,Netty,Spring 等都稍有了解,但依然没有任何优势—— 因为他们完全用不到。   整个面试过程中,问了大概以下问题:   1.说说你的项目,用了 SpringCloud 哪些功能?   2.熟悉 Mysql 吗?说说索引(不懂 Mysql 啊大佬)   3.如何实现一个单例模式(这个俺擅长)   4.平时使用了哪些线程池(这个俺也擅长)   5.Map 接口有哪些类(这个俺也擅长)   6.写一段 SQL 呗(不会 SQL)   7.如何实现免登陆功能(cookie session?)   当然,被刷了,估计是 SQL 不够好吧,而我擅长的他们也不需要。    XX 旅游   这个就比较奇葩了,是最奇葩的一个,面试官是个小伙子,根本不懂并发,然后强行问我并发,自己基本一言不发。还对我的回答貌似不满意?   1.自我介绍一下。  

35+程序员投简历,连HR那关都过不了……

女生的网名这么多〃 提交于 2021-02-08 05:18:38
年龄一直是程序员的一个痛点,也是一个不得不考虑的问题。 近日,一个百度的程序员发帖:来自甲骨文的同事说82年、83年被裁的程序员继续找工作时,各大公司的简历都过不了。此番言论很快就引起了各路网友的热议。 随后该楼主还补充道,简历根本进不了公司,在 HR 那关就挂了。 看了这个帖子,相信又会有很多“大龄”程序员开始焦虑了,但程序员原本是靠的能力,有些互联网公司把它搞成了吃青春饭的工作,把30岁以上的程序员给否了,这样真的好吗? 对此就有一些网友发表了不一样意见: 自己身边好多 40 多岁的程序员还在几个大厂来回跳,虽然 35 岁后会困难一点,但没必要说被锁死了,只要努力还是有机会的。 还有人分享自己的经历,年龄是大了,但也能拿到互联网公司的 Offer,被约去面试~ 程序员真的是吃青春饭的吗?绝对不是!说白了,还是和个人能力有关,只要能力强肯定不会找不到工作,怕的是能力和年龄不符。 今天我们以前端为例,大家普遍认为前端的薪资高,但却没有想过前端也是分为很多级别的,如今,市场人才需求发生变化,企业对技术人才的要求越来越高。 相较于初级前端开发人员,中高级前端工程师越来越受企业偏爱,两者的区别不仅在于相差 3-4 年的工作经验,更在于是否有丰富的项目经验、是否能提供完整的解决方案。 如何解决初级前端人员高薪就业并符合企业用人标准提高的双重需求?拉勾教育推出的 【大前端高薪训练营】

爱奇艺现场面试总结

帅比萌擦擦* 提交于 2021-02-08 02:54:59
一面: java内存模型:问面试官是jmm还是jvm,说是jvm,说了说分区 堆内存:说了堆内存划分和理由,各种内存的分配流程,各类回收算法。 项目:略 mysql锁存在哪里的:想不起来了。。。 mysql乐观锁悲观锁:乐观锁说了mvcc,悲观锁说了行锁表锁 mysql mvcc实现:说了下那两列blablabla,又说了下除了mvcc外还用了啥来保证可重复读 aqs:自己看过源码,就着lock类说,包括tryaquire,addwaiter,公平锁非公平锁实现区别 jdk1.7 1.8区别:部分容器类改进(如hashmap,concurrenthashmap),stream,lambda stream怎么实现的:底层用的类似fork join fork join怎么实现的:把人物分开,然两两后合并结果 写个归并排序:之前快排和堆排都练过,就归并。。。。没练,没憋出来 sql写行转列:。。尴尬,也写不出 springboot了解么:实验项目用过,着重说了下默认配置和springloud的基础 springcloud说下,画画图:主要说了eruka,ribbon,hystrix,fegin,config,bus,zuul 二面: 项目:略 后台开发高并发的理解:提高服务器配置,分布,服务管理,负载均衡,一致性处理,缓存,数据库分库分表,高可用,页面静态化都说了说,各说了下大致怎么做的

面向对象编程内功心法系列三(聊一聊设计原则)

匆匆过客 提交于 2021-02-08 01:24:07
1.引子 说起面向对象编程,我们都知道重要,且需要关注的这么一些事情。比如说设计思想、设计原则、设计模式。之所以说重要,一方面是面试需要,找工作的时候,总需要跟面试官聊上几句,这样显得大家都够专业;另外一方面则这是通往高级工程师,架构师的必备基本技能。 在这个系列中,前面我通过两篇文章给你分享了设计思想相关的一些内容,比如说编程范式,基于接口而非实现编程,高内聚低耦合。不知道你都还记得吗?这一篇我想接着给你分享设计原则相关的内容。 说起设计原则,你能先说一说都有哪些设计原则吗?经典的设计原则有 SOLID原则 KISS原则 YAGLI原则 DRY原则 LOD原则 设计原则的内容稍微有一些多,我们通过两篇文章来分享吧。这一篇我们一起先来看SOLID原则。你需要注意,SOLID并不只是一个设计原则,而是五个原则的统称,它们分别是: SRP( Single Responsibility Principle ):单一职责原则 OCP( Open Closed Principle ):开闭原则 LSP( Liskov Substitution Principle ):里氏替换原则 ISP( Interface Segregation Principle ):接口隔离原则 DIP( Dependence Inversion Principle ):依赖倒置原则 2.SOLID原则 2.1

Python大神用一道题带你搞定Python函数中形参和实参问题

五迷三道 提交于 2021-02-07 22:55:20
点击上方“ Python爬虫与数据挖掘 ”,进行关注 回复“ 书籍 ”即可获赠Python从入门到进阶共10本电子书 昨天在Python学习群里有位路人甲问了个Python函数中关于形参和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被搞得稀里糊涂。人生苦短,我用Python。 为了解答大家的这个疑惑,小编在此举个栗子,希望大家能够彻底的理解实参和形参在Python中的用法。 首先,大家一起看个栗子。 不可更改的对象 这个函数的输出值是多少?很多人会回答7,其实程序运行之后,其答案是6,点解呢? 为什么在这里形参的数值并不改变实参的数值? 这里需要给大家普及一个Python中的基础,在python中,string(字符串), tuples(元组), 和number(数值)是不可更改的对象,而list(列表),dict(字典)等则是可以修改的对象。 也就是说,这里形参的数值对于外部的实参的数值(number类型,不可变)来说是没有任何关系的,他们虽然是同一个名字,但是其指向对象是不一样的。所以当在程序最后进行打印a输出值的时候,其输出仍然是6。 下面这个栗子我们来看看可变的对象,以list(列表)作为实验对象。 可更改的对象 这个函数的输出值是多少?很多人会回答[1,2],其实程序运行之后,其答案是[2,1]。 与第一个栗子刚刚相反

简历造假一时爽,戳穿露馅毁一生

99封情书 提交于 2021-02-07 22:49:10
今年就业行情不佳,各大公司裁员、折腾,想找个好工作也不容易,有些人可能会琢磨些歪门邪道,民工大叔奉劝大家,“简历造假一时爽,戳穿露馅毁一生”。 因为微信好友比较多,有时会有人问我认不认识某个之前公司的老同事或者现公司的前同事(偶尔也有现同事),当然我也可能问别人,打听某个面试候选人是否靠谱,所以见过不少简历造假或者过度包装自己往脸上贴金的情况,在确切的第三方信息面前,注水简历立马露馅,面试结果当然就呵呵了,甚至可能面试机会都不会有。 为什么呢?因为不诚信啊!多少公司的价值观里放着这两个字?当年阿里“月饼门”搞得那么绝情,也是碰了这个红线。对一般人来说,诚信的口碑很重要,谁敢说我不诚信当时就得脸红脖子粗觉得被侮辱了,但实际上不少人私下并不太在乎。比如在找工作方面,各种造假的玩法屡见不鲜。多年前就有媒体做过调查分析,有相当比例的人认为“适当美化”情有可原而且非常必要。 现在某些培训机构或者猎头公司为了达成业绩目标,开发出了专门应对面试的培训,甚至包括“简历包装服务”和“防背调培训”,产业化一条龙,给面试官和HR造成了很大的困扰。 列举一些常见的造假方法: 1.学历、工作年限造假,相当于SEO。 近年这种针对于应聘网站筛选条件的“SEO”操作很常见,俨然已是标准套路,多半是刚毕业一两年的初级同学想努力获得更高职位的面试机会,因为筛简历的时候可以选择学历和工作,一般社招会选择“本科以上