面试

血的教训!蚂蚁金服、天猫、百度,多家面试被虐,奉劝各位年轻人耗子尾汁!

家住魔仙堡 提交于 2020-12-05 15:13:31
没有不坑的公司,所谓好公司就是不那么坑的公司 。 背景 十月份前后一个月的时间,有幸获得天猫、蚂蚁金服、百度和NAVER China的面试机会,对于普通院校毕业的我,能够收到大厂面试机会已经很兴奋了,然后就幻想着收到offer的场景,或许是兴奋冲昏了头脑,没有好好审视自我,竟然觉得面试通过的把握还是有的,毕竟有2年工作经验嘛。 准备过程 刷面试题,相信这是大多数小伙伴的惯用伎俩吧,每次换下家前刷面试题是必经流程。所谓刷面试题就是把职业相关基础知识在脑海中跑一遍,对于大神级的人物可以忽略这一步,能被众人膜拜肯定是有两把刷子的。我的感受是,刚开始找工作的时候,实际开发经验很少,看基础知识很费力,就像是过年回家爸妈带着我走远房亲戚一一介绍七大姨八大姑很难记住一样,各种关系根本不知道怎么联系到一起。经历过几个实际项目之后,刷面试题就会轻松很多。面试题的出发点是为了验证应聘者对基础知识的掌握程度,以及日常开发过程中遇到的问题,如果没有亲身经历过这些问题便很难理解。所以面试题不是用来背的。 了解岗位相关知识,不同大厂的面试流程是不同的,比如阿里从一面到给offer ,NAVER China和百度不接受电面,只能到公司面试等等。不同公司不同部门注重的点都是千差万别的,唯一不变的就是应聘岗位的基础知识。所以在刷面试题的基础上需要研究你所应聘的岗位,牵扯到哪些知识点和应用方面的问题

美团工作7年,精华全在这份学习笔记里了,已成功帮助多位朋友拿到5个大厂Offer

那年仲夏 提交于 2020-12-05 14:58:27
在美团工作了7年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,笔者也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等5个offer。 由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 有想获取的读者朋友,见下: 笔记目录展示: 获取完整笔记,见下: 部分内容截图: 获取完整笔记,见下: 来源: oschina 链接: https://my.oschina.net/u/4406332/blog/4775960

令人惊叹的JavaScript装B黑科技

一世执手 提交于 2020-12-05 11:09:43
Javascript是一门很吊的语言,我可能学了假的JavaScript,哈哈,大家还有什么推荐的,补充送那啥邀请码。 本文秉承着:你看不懂是你SB,我写的代码就要牛逼。 1、单行写一个评级组件 "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);定义一个变量rate是1到5的值,然后执行上面代码,看图 才发现插件什么的都弱爆了 2、如何装逼用代码骂别人SB ( ! ( ~ + []) + {})[ -- [ ~ + " " ][ + []] * [ ~ + []] + ~~ ! + []] + ({} + [])[[ ~ ! + []] * ~ + []] 3、如何用代码优雅的证明自己NB 这个牛逼了 console . log (([][[]] + [])[ + !! []] + ([] + {})[ ! + [] + !! []]) 4、JavaScript 错误处理的方式的正确姿势 😂 😂 😂 ,舅服你 try { something } catch (e) { window . location . href = " http://stackoverflow.com/search?q=[js]+ " + e . message ; } 5、从一行代码里面学点JavaScript []. forEach . call ( $$ ( " * " )

sql练习题

落爺英雄遲暮 提交于 2020-12-05 10:55:08
1.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路): 大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。 显示格式: 语文 数学 英语 及格 优秀 不及格 SELECT * from score a where a.语文=70; SELECT * from score a where a.数学=80; SELECT * from score a where a.英语=58; select a.语文,a.数学,a.英语 from score a where a.语文=70 or a.数学=80 or a.英语=58 select * from score a where a.语文=70 or a.数学=80 or a.英语=58; SELECT * FROM score WHERE 语文=70 OR 数学=80 OR 英语=58; SELECT ( CASE WHEN 语文 >= 80 THEN ' 优秀 ' WHEN 语文 >= 60 AND 语文 < 80 THEN ' 及格 ' ELSE ' 不及格 ' END ) AS 语文, ( CASE WHEN 数学 >= 80 THEN ' 优秀 ' WHEN 数学 >= 60 AND

推荐一款桌面管理神器

旧城冷巷雨未停 提交于 2020-12-05 10:52:36
大家是否都会有这样的体验: 刚开始用电脑,桌面文件或软件比较少,看着比较整洁干净,让人还挺舒服的。可是随着时间的增长和工作需要等其他原因,于是需要安装一些软件或编写一些文档。而为了下次方便,几乎都是放在桌面,从而桌面文件越来越多,看着密密麻麻,让人很不舒服。 于是,到了后面,大家的桌面就成了这样。 你的桌面是否需要整理成像下面这样干净整洁,让自己工作中心情愉悦呢? 下面给就大家推荐一款腾讯桌面整理软件。 官方软件介绍:桌面文件太多?找不到文件?通过使用格子,科学的区域划分和文件归类,帮你的桌面变得更整齐、提高你的使用效率。 当你安装好软件后,在桌面空白处右击,即可看到如下四个主要功能: 新建格子、一键桌面整理、壁纸中心、实用功能 。下面对这四个功能简单进行介绍。 新建格子 新建格子主要对文件进行分类整理,同一类文件可以放在同一个格子,方便文件查找与整理。 新建格子 成功新建格子后,可以对格子进行重命名。如果觉得格子太小,可以进行拉伸,方便查看文件。此外,还可对格子进行展开、收起、锁定、解锁、切换显示模式。 展开格子 收起格子 锁定格子 解锁格子 列表显示模式 图标显示模式 一键桌面整理 一键桌面整理可以快速对桌面进行整理,它会自动新建一个名为”我的文件“格子,并把桌面的所有文件(不包括软件)放入该格子中。该功能简单快速实现桌面整理,非常方便使用。 壁纸中心

只能用分布式锁,也能搞定每秒上千订单的高并发优化?

我与影子孤独终老i 提交于 2020-12-05 10:00:39
今天给大家聊一个有意思的话题: 每秒上千订单场景下,如何对分布式锁的并发能力进行优化? 背景引入 首先,我们一起来看看这个问题的背景? 前段时间有个朋友在外面面试,然后有一天找我聊说:有一个国内不错的电商公司,面试官给他出了一个场景题: 假如下单时,用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景? 他说他当时没答上来,因为没做过没什么思路。其实我当时听到这个面试题心里也觉得有点意思,因为如果是我来面试候选人的话,应该会给的范围更大一些。 比如让面试的同学聊一聊电商高并发秒杀场景下的库存超卖解决方案,各种方案的优缺点以及实践,进而聊到分布式锁这个话题。 因为库存超卖问题是有很多种技术解决方案的,比如悲观锁,分布式锁,乐观锁,队列串行化,Redis原子操作,等等吧。 但是既然那个面试官兄弟限定死了用分布式锁来解决库存超卖,我估计就是想问一个点:在高并发场景下如何优化分布式锁的并发性能。 我觉得,面试官提问的角度还是可以接受的,因为在实际落地生产的时候,分布式锁这个东西保证了数据的准确性,但是他天然并发能力有点弱。 刚好我之前在自己项目的其他场景下,确实是做过高并发场景下的分布式锁优化方案,因此正好是借着这个朋友的面试题,把分布式锁的高并发优化思路,给大家来聊一聊。 库存超卖现象是怎么产生的? 先来看看如果不用分布式锁

高级测试工程师面试必问面试基础整理——python基础(一)(首发公众号:子安之路)

本小妞迷上赌 提交于 2020-12-05 06:44:11
现在深圳市场行情,高级测试工程师因为都需要对编程语言有较高的要求,但是大部分又没有python笔试机试题,所以面试必问python基础,这里我整理一下python基本概念, 陆续收集到面试中python相关问题都会整理在这里 (一)python数据类型问题list 1,Python3 数据类型有哪些? Number 数字 String 字符串 List 列表 Tuple 元组 Dictionary 字典 Set 集合 Null 空值 Boolean 布尔值 一共8种,前6种为常见数据类型。 ( 二)Python的数据类型概念,这里会问数据类型区别,例如,list和set区别,list和tuple区别等等: 1,Number 数字: int(整型) float(浮点型) complex(复数)  2,String 字符串: 可以使用单引号('')或双引号("")来表示字符串; 多行字符串可以使用三重引号 ''' 或 """来表示; 字符串可以被索引和截取; 加号(+)是字符串的连接符, 星号(*) 表示复制当前字符串,紧跟的数字为复制的次数; 字符串内部既包含 ' 又包含 ", 可以用转义字符 \ 来标识 比如: 'I\'m \"OK\"!' \n 表示换行, \t 表示制表符,字符 \ 本身也要转义,所以 \\ 表示的字符就是 \ 3,List 列表: 列表是有序的元素序列;

并发环境下,先操作数据库还是先操作缓存?

拜拜、爱过 提交于 2020-12-05 06:12:30
点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达 前言 在分布式系统中,缓存和数据库同时存在时,如果有写操作,先操作数据库还是先操作缓存呢?本文将分5种方案 展 开 阐述对比,谢谢阅读~ github地址,衷心感谢每一颗star ❝ https://github.com/whx123/JavaHome ❞ 缓存维护方案一 如果是一读(线程B)一写(线程A)操作, 「先操作缓存,再操作数据库」 。流程图如下所示: 1.线程A发起一个写操作,第一步del cache 2.线程A第二步写入新数据到DB 3.线程B发起一个读操作,cache miss缓存失效了。 4.线程B从DB获取最新数据 5.线程B执行set cache,把从DB读到的数据,更新到缓存。 「这样看,没啥问题」 。我们再看第二个流程图,如下: 1.线程A发起一个写操作,第一步del cache 2.此时线程B发起一个读操作,cache miss 3.线程B继续读DB,读出来一个老数据 4.然后老数据设置入cache 5.线程A写入DB最新的数据 OK,酱紫,就有问题了吧,老数据入到缓存了, 「每次读都是老数据啦,缓存与数据与数据库数据不一致了」 。 缓存维护方案二 上个方案是一读一写,如果是双写操作, 「先操作缓存,在操作数据库」 ,会怎么样呢? 1.线程A发起一个写操作,第一步set cache 2

面试官问:平常你是怎么对Java服务进行调优的?

和自甴很熟 提交于 2020-12-05 02:55:43
点击关注上方“ 程序员私房菜 ”,设为“置顶或星标”,第一时间送达技术干货。 来源:http://t.cn/AiCTERJz Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大行其道的今天,随着系统访问量的日益增加和代码的臃肿,各种性能问题开始纷至沓来。 Java 应用性能的瓶颈点非常多,比如磁盘、内存、网络 I/O 等系统因素,Java 应用代码,JVM GC,数据库,缓存等。笔者根据个人经验,将 Java 性能优化分为 4 个层级:应用层、数据库层、框架层、JVM 层 ,如图 1 所示。 图 1.Java 性能优化分层模型 每层优化难度逐级增加,涉及的知识和解决的问题也会不同。比如应用层需要理解代码逻辑,通过 Java 线程栈 定位有问题代码行等;数据库层面需要 分析 SQL、定位死锁 等;框架层需要 懂源代码 , 理解框架 机制;JVM 层需要对 GC 的类型和工作机制有深入了解,对 各种 JVM 参数 作用了然于胸。 围绕 Java 性能优化,有两种最基本的分析方法: 现场分析法和事后分析法。 现场分析法 通过保留现场,再采用诊断工具分析定位。现场分析对线上影响较大,部分场景(特别是涉及到用户关键的在线业务时)不太合适。 事后分析法 需要尽可能多收集现场数据

Redis,就是这么朴实无华

泪湿孤枕 提交于 2020-12-05 02:55:12
http://xjjdog.cn 对200+原创文章进行了细致的分类,阅读更流畅,欢迎收藏。 原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。 Redis是2009年发布的,到今天已经超过10岁了。作为必备技能之一,关于它也有聊不完的话题。本文中的任何一个点,都可以展开,完成一篇中等规模的文章。 交流和面试时,你需要用最精准的语言进行描述,那么本文比较适合你。 redis能力: 1 0W/s QPS (redis-benchmark) 1w+ 长链接 (netstat / ss) 最复杂的Zset 6kw数据 写入1k/s 读取5k/s 平均耗时5ms 持久化 (rdb) 1. 基本概览 学习一门新语言,重要的是掌握它的基本数据结构,以及这些数据结构的API。redis的这些数据结构,就类似一门语言。 Redis数据结构 常用5种,一共10种。面试时一般回答5种即可,但其他5种是加分项。 String 字符串 Hash 字典 List 列表 Set 集合 ZSet 有序集合。性能参考: 《redis的zset有多牛?请把耳朵递过来》 Pubsub 发布订阅 (不推荐使用,坑很多) Bitmap 位图 GEO 地理位置 (有限使用,附近的人) Stream 流(5.0) (与Kafka非常像) Hyperloglog