【趣图】
程序员们,
你们用的编程语言里,
数组是从0开始索引的,还是从1开始的?
看到下面这张图,
你大概能猜到是用啥写的了吧?
什么,没有猜到?
那大概这门语言在TIOBE上,
很久没有在第一梯队亮相了。
看着下方输入框写上去的 5,
我隐约感觉到,
屏幕后方有无数个手里举着砖头
怒火燃烧的小伙伴~~
[呲牙][奸笑]
我是@程序员小助手,关注我,持续更新每日科技热点。
今天看了下阿里的开发手册。#阿里巴巴开发手册#
分享几点我认为可能踩坑的地方--系列一
【强制】所有整型包装类对象之间值的比较,全部使用 equals 方法比较。 说明:对于 Integer var = ? 在-128 至 127 之间的赋值,Integer 对象是在 IntegerCache.cache 产生, 会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都 会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 equals 方法进行判断。

【强制】 BigDecimal 的等值比较应使用 compareTo()方法,而不是 equals()方法。 说明:equals()方法会比较值和精度(1.0 与 1.00 返回结果为 false),而 compareTo()则会忽略精度。
【推荐】使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容 的检查,否则会有抛 IndexOutOfBoundsException 的风险。 说明: String str = "a,b,c,,"; String[] ary = str.split(","); // 预期大于 3,结果是 3 System.out.println(ary.length);
.【推荐】setter 方法中,参数名称与类成员变量名称一致,this.成员名 = 参数名。在 getter/setter 方法中,不要增加业务逻辑,增加排查问题的难度。
【推荐】final 可以声明类、成员变量、方法、以及本地变量,下列情况使用 final 关键字: 1) 不允许被继承的类,如:String 类。 2) 不允许修改引用的域对象,如:POJO 类的域变量。 3) 不允许被覆写的方法,如:POJO 类的 setter 方法。 4) 不允许运行过程中重新赋值的局部变量。 5) 避免上下文重复使用一个变量,使用 final 关键字可以强制重新定义一个变量,方便更好地进行重构。

【推荐】类成员与方法访问控制从严:如果 是一个 private 的方法,想删除就删除,可是一个 public 的 service 成员方法或成员变量,删除一下,不 得手心冒点汗吗?变量像自己的小孩,尽量在自己的视线内,变量作用域太大,无限制的到处跑,那么你 会担心的。
MongoDB 是通用型数据库,除了创建、读取、更新和删除数据外,它还提供了数据库管理系统的常见功能和许多其他独特的功能,举例如下。
MongoDB 支持通用的二级索引,并提供唯一索引、复合索引、地理空间索引及全文索引功能。此外,它还支持在不同层次结构(如嵌套文档和数组)上建立二级索引,让开发人员能够以最适合应用程序的方式充分利用其建模能力。
MongoDB 提供了一种基于数据处理管道的聚合框架。用户可以通过在服务器端使用一系列相对简单的处理阶段,来充分利用数据库优化以构建复杂的分析引擎。

MongoDB 支持生命周期有限(TTL)集合,适用于保存将在特定时间过期的数据,比如会话和固定大小的集合,以及用于保存最近的数据(日志)。MongoDB 还支持部分索引,可以仅对符合某个条件的文档创建索引,以提高效率并减少所需的存储空间。
针对大文件及文件元数据的存储,MongoDB 使用了一种非常易用的协议。
MongoDB 并不具备关系数据库中的一些常见功能,特别是复杂的连接操作。MongoDB 通过使用 3.2 版本引入的 $lookup 聚合运算符以非常有限的方式支持连接操作。在 3.6 版本中,可以使用多个连接条件以及非关联子查询来实现更复杂的连接。MongoDB 的这种处理是出于架构上的考虑,以便获得更好的可扩展性,因为这些特性在分布式系统中很难高效地实现。
卷王归来之互联网裁员大潮冲击下面试记录3
consol和其他注册中心的区别?

不清除
类加载机制:加载字节码、准备空间、解析类、init
双亲委派:基本上能说清楚
线程池:核心线程数、等待队列、最大线程数、拒绝策略;
存活时间过期之后释放
1000万数据,做rehash,多线程处理,30个核心线程数;
feign调用:jdk动态代理;
redis数据持久化方式:RDB & AOF;
redis缓存用户信息;
jdk1.8 hashmap:数组+链表+红黑树
put:根据key hash是否存在,存在链表中插入,大于8时候转变为红黑树;
get:数组中有直接返回,链表中有使用equal,红黑树中使用getTreeNode;
扩容过程:不清楚;
数组和链表的特点:基本清楚;
红黑树特点:
左旋和右旋;
根节点是黑的、下一层是红;
算法题:强盗打劫;给出暴力解法;
消息顺序行如何保证:基本清楚,但是原理不清楚;

mysql索引:
left join 和 right join区别:清楚;
union和union all 区别:清楚;
主键索引、覆盖索引、最左匹配原则概念:
最左匹配原则基本上清楚;
综上:候选人工作三年多,沟通流程,技术深度不够,但是对自己熟悉的结构还是有较全面的理解,因为只工作了三年多,考虑面试整体表现,暂给通过,麻烦后续面试官再考察。
非常棒的JavaScript算法与数据结构推荐,值得好好读一读学习一下。[中国赞]
网页链接
部分内容:B - 初学者, A - 进阶
## 数据结构:
B 链表
B 双向链表
B 队列
B 栈
B 哈希表(散列)
B 堆 - 最大堆 & 最小堆
B 优先队列
A 字典树
A 树A 二叉查找树A AVL 树A 红黑树A 线段树 - 使用 最小/最大/总和 范围查询示例A 树状数组 (二叉索引树)

A 图 (有向图与无向图)
A 并查集
A 布隆过滤器
## 算法
数学
B 位运算 - set/get/update/clear 位、乘以/除以二进制位 、变负等
B 阶乘
B 斐波那契数 - 经典 和 闭式 版本
B 素数检测 (排除法)
B 欧几里得算法 - 计算最大公约数 (GCD)
B 最小公倍数 (LCM)
B 素数筛 - 查找任意给定范围内的所有素数
……
实际内容远多于这些,感兴趣小伙伴可以学习一下。
Pandas库是基于NumPy库的一个开源Python库,被广泛用于完成数据分析工作,其名字源于“panel data”(面板数据)。
Pandas库提供非常直观的数据结构和强大的数据处理功能,某种程度上可以把Pandas库看成是Python版的Excel。
相较于NumPy库,Pandas库更善于处理二维数据,它主要有两种数据结构:Series和DataFrame。
Series类似于通过NumPy库创建的一维数组,不同的是Series对象不仅包含数值,还包含一组索引,单独使用相对较少。

DataFrame是一种二维表格数据结构,可以将其看成一个Excel表格,应用广泛。
我正在根据Pandas文档中的内容梳理自己的新手指南《十分钟学会Pandas》,预计明晚发布到文章里,有需要的小伙伴可自行查阅。
小红书Java社招,面试题分享(难度:简单,经验:1年+)
1.自我介绍,项目介绍,项目中如何做得容错处理
2.知道哪些常用的数据结构,各种数据结构特性介绍,时间复杂度如何?
3.synchronized和lock的区别?
4.介绍一下spring ioc解决了什么问题?怎么实现的?
5.知道哪些设计模式?说一下建造者模式?
6.说说项目中的索引优化?B+树有什么特点?索引为什么是B+树实现的?
7.ArrayList的底层实现?为什么加载因子是0.75?
8.Redis的持久化策略,各自的优缺点?Redis 写AOF文件的流程?
9.口述一种生产者和消费者的实现方案?

10.Restful介绍一下?规范是怎么样的?
11.hashmap的底层结构,concurrenthashmap的结构,两者的区别?
12.数据库隔离级别,各级别会产生什么问题?幻读和脏读是什么?如何避免?
13.多线程的几种实现方案?线程池用过吗?项目中哪些场景用到的?
14.讲讲GC机制?
15.手写算法:求最大连续子数组的和
16.手写算法:矩阵最小路径和
#程序员##职场##职场干货##职场微头条#
字节Java社招,面试题分享(难度:高):
1. 询问项目经历和细节
2.redis的数据结构有哪些?
3.redis zset如何实现的?介绍一下跳跃表、哈希表及压缩链表?
4.redis的持久化方式?如何配置?
5.redis的zset做排行榜时,如果要实现分数相同时按时间排序如何实现?
5.mysql的索引讲一下?
6.mysql的事务隔离级别,每个级别可能产生的问题?

7.讲一下binlog日志、redolog日志,及两者之间的区别?
8.让你设计一个限流的系统,如何做?
9.让你设计一个延时任务系统,如何做?
10.算法题:给一颗二叉树的根节点,现在有这个二叉树的部分节点,找到这些节点最近的公共祖先?
11.算法题:一个无序数组中找其子序列构成的和最大,要求子序列中的元素在原数组中两两都不相邻。
#面试##职场微头条##职场##求职面试大家说#
滴滴Java社招,40道面试题分享,中等难度,工作2年+
1、自我介绍,介绍最近做的一个项目,有什么难点?工作有哪些亮点,解决了哪些技术问题?
2、详细解释微服务,如何实现服务发现与注册,如果某个服务挂掉,如何通知调用者?
3、如何写出健壮的代码?项目中如何做的日志打印?讲讲领域模型设计(DDD)?

4、数据异步处理如何实现,服务如何拆分,数据统计为何增量统计?
5、有没有做过系统性能提升?讲一下关键的改进点?
6、为什么使用微服务?dubbo和springcloud是怎么选择的?
7、mysql事务隔离级别?什么情况下会出现幻读?mysql生产环境遇到过死锁吗,怎么理解死锁?
8、mysql 怎么做的分库分表,有没有遇到跨库查询问题?mysql 慢查询怎么解决的?
9、mysql的版本控制如何实现的?行级别锁添加和释放的时机?
10、索引结构,b+树较其他b树和红黑树的优势?
11、联合索引的树b+树长什么样子?为什么是索引最左匹配原则?B+树查询的时间复杂度?
12、mybatis的二级缓存是怎么实现的?二级缓存和一级缓存是存了哪些数据?
13、熔断限流怎么做的,hystrix解决了什么问题?hystrix怎么实现的?
14、项目中接口幂等性的实现?通过令牌保证接口幂等性过程的描述?令牌的生成和删除?

15、讲一下springmvc的原理?Spring用到哪些设计模式?
16、spring cloud 与spring什么关系?了解springboot的自动装配原理吗?
17、spring的循环依赖,怎么解决的,为什么需要加个三级缓存?
18、redis支持的数据结构?redis如何实现string,这样实现有什么好处?
19、RDB和AOF都是什么,AOF日志量太大时redis如何处理?
20、redis key过期时间内部存储结构及实现?redis的过期淘汰机制有哪些?
21、redis 集群了解哪些?redis 数据如何做的备份?
22、如何使用redis实现一个优先级队列?
23、缓存穿透和缓存雪崩及解决办法?布隆过滤器的基本原理?
24、zookeeper集群的角色?角色的区别及切换过程?zab选举的具体过程?
25、说一下HashMap的数据结构?hashmap的rehash过程?jdk1.8hashmap有哪些改进?
26、类加载的具体过程?实现类动态加载的机制有哪些?

27、介绍下JVM GC算法CMS和G1?有没有线上GC调优经验?
28、Java实现锁的方式有哪几种?synchronize的实现方式、底层原理、锁升级的过程?
29、lock和synchronize的区别?Lock是公平锁还是非公平锁?
30、AQS的实现讲一下?了解unsafe吗 ?
31、分布式锁redis和zookeeper的实现?有什么优缺点?
32、用过什么消息队列?应用场景有什么?有没有和其他mq作比较?
33、本地事务和发消息如何保证强一致性?
34、思考题:怎么统计一亿用户的日活?
35、算法题:求一个环形链表的环的长度
36、算法题:二叉树的最近公共祖先
37:算法题:如何获取一个数组里面第k大的数?
38:HR:工作这几年,有什么样的职场感受?
39:HR:自己的优点有哪些?自己的缺点有哪些?
40、HR:为什么想离职?期望薪资?手上有没有其他offer,哪些公司?
#有话职说##职场达人说##职场##职场干货##职场微头条##Java##程序员#







