面试

这可能是最中肯的Redis规范了

杀马特。学长 韩版系。学妹 提交于 2020-11-08 10:12:09
点击上方蓝色“ 方志朋 ”,选择“设为星标” 回复“ 666 ”获取独家整理的学习资料! 来源:小姐姐味道 redis功能强大,数据类型丰富,再快的系统,也经不住疯狂的滥用。通过禁用部分高风险功能,并挂上开发的枷锁,业务更能够以简洁、通用的思想去考虑问题,而不是绑定在某种实现上。 Redis 根据不同的用途,会有不同的持久化策略和逐出策略,所以,在使用和申请 Redis 集群前,请明确是用来做缓存还是存储。redis 的集群有主从和 cluster 两种模式,各有优缺点。以下规范不区分集群模式,我们分别从使用场景和操作限制两方面说明。 使用规范 冷热数据区分 虽然 Redis支持持久化,但将所有数据存储在 Redis 中,成本非常昂贵。建议将热数据 (如 QPS超过 5k) 的数据加载到 Redis 中。低频数据可存储在 Mysql、 ElasticSearch中。 业务数据分离 不要将不相关的数据业务都放到一个 Redis中。一方面避免业务相互影响,另一方面避免单实例膨胀,并能在故障时降低影响面,快速恢复。 消息大小限制 由于 Redis 是单线程服务,消息过大会阻塞并拖慢其他操作。保持消息内容在 1KB 以下是个好的习惯。严禁超过 50KB 的单条记录。消息过大还会引起网络带宽的高占用,持久化到磁盘时的 IO 问题。 连接数限制 连接的频繁创建和销毁,会浪费大量的系统资源

不多不少,大学里必做的五件事(从我的大一说起)

烂漫一生 提交于 2020-11-08 09:54:11
本文 github/SmileLionCoder 已收录,有Java程序员进阶技术知识地图以及我的系列文章,欢迎大家Star。 这不是一篇说教文,也不是一篇人生哲理文,只是经过了本科、研究生,过来谈谈自己的经历。 一、基础打牢,事半功倍 有一段时间很喜欢文学,看过杨绛的《我们仨》、《走到人生边上》,也看过钱钟书的《围城》,看过路遥的《平凡的世界》、《人生》......这些好像都是差不多题材的文学作品,其中路遥的书在我们学校的借书排行榜一直位于前十,朴实却又引人入胜的文字魅力可见经久不衰。 我时常在经历过一些人和事之后,会联想到自己读过书里的故事,那些人物的刻画以及他们说过的话,我会顿然醒悟。书到用时方恨少从来不只是一句口头禅,学校里的图书馆有着大批的藏书,分门别类,只有你想不到,没有图书馆没有的,只恨自己一天只有二十四小时,学不够,看不完。 说完文学素养,我建议把自己课业的知识学扎实,如果毕业后打算在自己专业领域继续发展,那基础绝对是很重要的。拿我所在的计算机专业来说,我实习时被内推的第一个公司是阿里,那时候对面试没什么概念,也不知道需要准备些什么,会问我什么问题......后来被轻虐。面试官问的多是数据结构和JAVA基础上的东西,并不算为难,知识随着技术的提升,反而有些思想固化了,基础的东西不太记得,这就是基础不扎实的表现。再后来吃一堑长一智,复习基础、刷面经、刷算法题

为了面上阿里,花费2个月终于整理出这份大厂Java面试资料

China☆狼群 提交于 2020-11-08 09:50:07
前言 先做个自我介绍,本人之前一直在外包公司做增删改查,做了两年,实在太累了!就想趁着金九银十这个好机会看能不能实现自己的阿里梦,没想到被虐了个干干净净! 不过没关系,通过这次面试,我也认识到自己确实有很多不足的地方,通过这篇文章,和大家分享一下,最后也把我整理的面试资料分享给大家,希望有人替我圆了阿里梦 阿里一面 1.自我介绍 2.说一下BIO 和NIO 3.你说到多路复用,多路复用什么意思,为什么可以做到多路复用 4.这个select函数你说一下,底层怎么保证效率的,如果请求很多怎么办 5.我看你用到了Zookeeper ,说一下他可以干什么 6.只有一个Zookeeper 行不行?怎么保证他的可用性 7.服务器和客户端连接,多个连接会不会出问题? 8.Zookeeper 如果每次消费都连接,会不会效率太低? 怎么解决? 9.说一下它的底层算法吧,说你知道的 10.我看你实现了这几种序列化机制,都说一下吧 11.为什么hessian,和kyro速度更快呢? 12.了解spring吗? 说一下ioc和aop 13.aop底层怎么实现的 14.说一下spring ioc创建和销毁? (我有点懵,问是不是要回答bean的生命周期,面试官说 不是,然后我就随便说了 ) 15.Java的类加载过程 16.了解mysql吗,说一下innodb底层 17.有没有搭过服务器? 18

谈谈最近的面试感悟和人生

喜欢而已 提交于 2020-11-08 09:45:19
前言 人近三十,兜兜转转。三十而立感悟如此。 最近也开始了面试,裸辞之后,刚准备面试,许多不太适应的情况时有发生,当前的大环境也并不太平,裁员现象也频出不穷。在这种情况下去面试,不仅是对自身实力的检验,更是对人生的一次考试。 话不多说,先谈最近面试经历。 面试经历 腾讯 一面项目和技术基础。这里会问道一些基础特性,面试时间大概一个小时。前端基础,注重的是JS一些相关特性,大体面试马马虎虎。聊到项目,却碰到了坎坷,准备不充分之下,弄得面试官也很是纠结。不过好歹,面试官还是让进入二面。 二面技术原理,原理说的磕磕绊绊,自己的表现不好。还有手写代码,也写得并不完善,二面结束,也就结束了。 阿里 阿里面试时长最短,只有电话一轮,面试时间不到二十分钟。面试项目优化,性能优化方式。无奈面试官稍微引申,自己便是捉襟见肘,表现尴尬,所以,无疾而终。这个,自然是自身问题。 蘑菇街 面试体验略差,感觉像是刷KPI的,面试一轮随便问了几个问题结束。 58到家 58到家的面试,问了基础和React原理,原理说的磕磕绊绊,自己也认识到不足,有待提高,一面挂。 乘法云 一面挂,这个是学完驾照之后第一次面试,比上面的都靠前,实在是自己太垃圾了,没准备的情况下面试,好多东西都回答不上来,一面结束就挂了。 MOKA 面试体验一般,技术官一轮面试主要是面试基础,没有太多原理性质东西,面试完后,就让走了。 美团

算法:面试和工作中常用的算法

半世苍凉 提交于 2020-11-08 08:55:01
前几天一直在纠结算法的问题,可自己研究了下也没啥成效,不知道哪些是重点,眉毛胡子一把抓肯定效果不好的。所以今天把这些比较容易用到的算法总结一下,相当于是让大家有个更好的方式理解,也帮助我自己更好的深入学习。排序应该算是我们工作中用的最普遍的算法之一了。其中冒泡排序,选择排序和插入排序更是基础中的基础,是大家一定要熟练掌握的(能够快速手写)。 首先我们明确几个概念: 时间复杂度:书面意思都说的很官方,我的理解就是一个排序算法经过多少次循环完成排序的,然后用公式算出一个通用的结果,将常数去掉。 空间复杂度:就是你在排序的过程中需要额外消耗的内存。 内排序:排序可以在自己的内存中完成 外排序:排序可能需要借助外部存储空间。一般外排序的空间复杂度较高 稳定:当两个相等的元素经过排序之后,先后顺序保持一致的话那么就是稳定,先后顺序变了那就是不稳定。 下面可以看下所有的算法: **插图** 我们今天讲的是我们面试中或者工作中经常会碰到的排序算法。如果需要了解其他算法的实现方式可以参考:https://blog.csdn.net/weixin_41190227/article/details/86600821 这篇文章写的很详细,可以帮你解决其他排序相关的问题。 ## 冒泡排序 原理:从头开始遍历,遍历到每个元素时每次都重复走一遍要排序的数组,如果元素顺序错误,就交换位置

面试中常考的几种算法

旧巷老猫 提交于 2020-11-08 08:33:32
前言 排序算法是面试中的重点考点,这部分算法不是很难,但细节处很凸显基本功,如果深究起来怕是很多人都回答不清的。 今天就来借着Leetcode的一道模板题来讲讲各个算法的实现(Python),以及一些注意事项,不足之处欢迎指正。 涉及算法 冒泡排序 快速排序 归并排序 堆排序 选择排序 插入排序 shell排序 Leetcode测评地址 - 75 Sort Colors Medium难度 正文 先解释一下题意: 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 其实很简单,给数组排一下序就行了,不过用自带的sort就没意思了,这题正好可以用来测一下各个排序算法。 冒泡排序 它的思想是每次让一个元素和它相邻的元素对比并交换值,每一趟下来都有一个元素被冒泡到最顶端,也就是说它排好了,下一趟排序就不用和它比较了。 所以每一趟需要对比的次数都会-1,实现起来,第一层循环控制比较次数,第二层循环执行冒泡操作。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class : def (self, nums: List[int]) -> None : """ 冒泡排序的思想: 依次对数组中的每个元素进行排序,将它们排到适合的位置上去

程序员为什么要写博客?怎么写博客?

点点圈 提交于 2020-11-08 08:32:01
作者 | ithuangqing 来源 | 编码之外(ID:ithuangqing) 今天就来和大家聊聊关于写博客的一些事情,首先声明哦,这都是我自己写博客那么久以来的一些想法,可能有些地方不够成熟,但我还是想着分享出来,万一对你有些帮助呢? 为什么这里要加上程序员?不是程序员就不适合写博客吗?那倒不是,我不了解其他行业怎样,但是我知道,至少程序员写博客是对自己非常有帮助的一件事情,而且,很多前辈给编程小白的建议大多都有写写博客吧! 对了,我这里要讲的是,为什么程序员要写博客啊? 我们人呐,其实都是蛮物质的,对自己没啥好处的事情一般都不怎么愿意干,而且都喜欢短期收益高的事情,所以啊,很多人其实都是不怎么爱学习滴,学习这件事情有的时候还真的是出力不讨好的事情,我都不知道自己学这些东西有啥用,是不是? 不得不说,写博客,在我看来其实也是一件短期看不到收益的事情,但是也不那么明显,至少你写出来一篇博客,那个时候还是有些许成就感的,如果文章再收到好评,那成就感就瞬间提升一个档次啊。 但是嘞,经过我们这些前辈们的实践发现啊,写博客,绝对是对程序员非常有价值额一件事情!所以,如果你还没有开始写,那么开始写起来,如果你已经在写,那么继续坚持下去! 那写博客到底对我们有啥好处啊? 我们学习编程的都知道,无论你学得是前端,还是java,Python这些,你都会感觉,哎呀,知识真的是太多了

工作8年,薪资从1w涨到7w,网友:本科的话有点牛逼了

人盡茶涼 提交于 2020-11-08 07:53:51
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 程序员求职面试(微信号:CoderJob)整理 近日,有网友在某社交平台表示:经历了8年薪资才从1w涨到7w * 16,引起大家的讨论。 根据网友们的评论,有不少网友表示自己跟该职友的情况差不多。 @有网友说: 我7年从0.6k到50k @也有网友说: 8年,从2k涨到20k @还有网友说: 我十年从1.8k到50k 不过,也有网友表示该职友太夸张。 @有网友说: 牛在天上飞 @有网友调侃: 给你开10万一个月,来我公司怎么样? @也有网友说: 你确定你能拿到16个月?搞笑 @甚至有网友开玩笑: 你们还是太菜了,时薪1K的人飘过 当然,也有网友是很认真地向该职友咨询一些相关的信息:“本科还是硕士”、“有股票吗”。 根据该职友的回答,学历是属于本科学历,上面提及的薪资,是属于现金,还有股票这些。 字节跳动作为一家互联网公司,也是很多IT人想要进去的企业。 字节的 员工数量目前超过5万人 , 男女比例为57:43 ,在年龄层次上,97%都是80、90后,最年轻的员工刚过完18岁生日。 而字节跳动的职级研发序列一共10级: 不同序列间月薪base差异较大,技术base整体偏高。比如2-1月薪会在20k+,2-2的package会在60w

java面试——多线程

岁酱吖の 提交于 2020-11-08 07:24:00
背景:java知识比较宽泛,最好对每一类知识点进行分类总结,方便后面学习查看。该文主要用来总结多线程方面的知识点。 并发与并行的概念 并发性(concurrency)和并行性(parallel)是两个概念—— 并行指在同一时刻,有多条指令在多个处理器上同时执行; 并发指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。 出自《疯狂java讲义》第16章 多线程 线程的状态转换 1 . 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 2 . 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。 线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态(running)。 3 . 阻塞(BLOCKED):表示线程阻塞于锁。 4 . 等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。 5 . 超时等待(TIMED_WAITING):该状态不同于WAITING,它可以在指定的时间后自行返回。 6 . 终止(TERMINATED)

拜托,面试别再让我数1了!!!

被刻印的时光 ゝ 提交于 2020-11-08 07:23:36
面试中,除了TopK,是否被问过: 求一个正整数的二进制表示包含多少个1? 画外音:姊妹篇《 拜托,面试别再问我TopK了!!! 》。 例如: uint32_t i=58585858; i的 二进制表示 是: 0000 00 11 0 111 11 0 1 1111 00 11 0000 00 1 0 于是,i的二进制表示包含15个1。 到底有几种方法,这些思路里蕴含的优化思路究竟是怎么样的,今天和大家聊一聊。 一、位移法 思路 :既然输入n是uint32,每次取n的最低位,判断是不是1,位移32次,循环判断即可。 伪代码 : do{ if ((n&1)==1){ result++; } n>>= 1; i++; } while(i<32); 分析 :不管n的二进制表示里包含多少个1,都需要循环 计算32次 ,比较耗时。有没有可能,每次消除掉一个1,这样来降低计算次数呢? 二、求与法 观察一下 n 与 n-1 这两个数的二进制表示: 最末位一个1会变成0 最末位一个1之后的0会全部变成1 其他位相同 栗子 : x = 101 1 0000 x-1= 101 0 1111 x & (x-1) = 101 0 0000 于是, n&(n-1)这个操作 ,可以起到“ 消除最后一个1 ”的功效。 思路 :逐步通过n&(n-1),来消除n末尾的1,消除了多少次,就有多少个1。 伪代码 :