大家好,我是鸭鸭!

等了这么久,腾讯终于陆陆续续开奖了!

去年鹅厂差不多是 11 月中旬开奖的,今年腾讯开得不紧不慢,到现在还有不少同学没有收到开奖。

大家可以先看看去年腾讯开奖,做个参考:

在这里插入图片描述

今年大包开的不多,有同学吐槽,自己陷入了三家开奖制衡:

从今年已经开奖的信息来看,鹅厂开给应届生的薪资没有变动太多,这是鸭鸭目前收集的一些已经开奖的信息:

  • 客户端开发,base 深圳,30*15+8w股+签字费
  • 开发,base 深圳,35k*15+签字费
  • 后台开发,base 深圳,29k*15+6w股+3
  • 后端开发,base 深圳。30*15+6w股+3
  • 测开,base 成都,22.5*15
  • 后端开发,base 北京,25k*15(实习转正)
  • 产品,base 深圳,24*15+签字费

另外有消息爆料,今年腾讯大模型算法(青云),能达到 65k*16。但目前青云的爆料太少,另外列给大家作为参考吧。

鹅厂之前调整了薪资结构,比如房补的部分就改了。

我们之前说 字节开奖 的时候提过,字节在北京房补是 1500/月,上海是 1000/月,其他城市在 500 - 1000/月 这个区间。

腾讯之前是 4k/月,去年调整为按 15 个月发放,加在每个月的薪资 base 中。所以如果这样看的话,打工人到手的薪资未必多,但好处是 base 涨了,后面跳槽的时候好谈薪。

如果是你,愿意选择哪一种呢?

欢迎来评论区说说。

……

今天分享一篇腾讯面经。

在这里插入图片描述

篇幅有限,完整答案可以进入面试鸭 - 程序员求职面试刷题神器,高频编程题目免费刷进行查阅。

面向对象的理解、面向过程和面向对象编程有什么区别?

面向对象编程(Object Oriented Programming,OOP)是一种对象为中心的编程范式或者说编程风格。把类或对象作为基本单元来组织代码,并且运用提炼出的:封装、继承和多态来作为代码设计指导。

面向过程编程是一种以过程或函数为中心的编程范式或者说编程风格,以过程作为基本单元来组织代码。过程其实就是动作,对应到代码中来就是函数,面向过程中函数和数据是分离的,数据就是成员变量。

总结来看:面向对象编程注重对象之间的交互和模块化设计,而面向过程编程注重逻辑的分步实现。

主要区别如下

1)思维方式

  • 面向对象:通过定义对象的属性和行为来解决问题,关注对象之间的关系和交互。
  • 面向过程:通过函数或过程一步步实现业务逻辑,关注执行的步骤和顺序。

2)数据与行为的关系

  • 面向对象:数据和行为封装在对象内部,数据操作由对象方法进行管理。
  • 面向过程:数据和函数是分离的,函数对数据进行操作。

3)可扩展性和复用性

  • 面向对象:通过继承、接口、多态等机制支持代码的高复用性和扩展性。
  • 面向过程:复用性较低,扩展需要修改已有代码,影响整体稳定性。

4)适用场景

  • 面向对象:适合处理复杂的系统和模块化设计,便于维护和扩展。
  • 面向过程:适用于一些简单、顺序性强的小型程序,开发效率较高。

常见的集合

Java 中的集合类主要分为两大类:Collection 接口和 Map 接口。前者是存储对象的集合类,后者存储的是键值对(key-value)。

20220219202800.png

Collection 接口下又分为 List、Set 和 Queue 接口。每个接口有其具体实现类。以下是主要的集合类:

List 接口:

  • ArrayList:基于动态数组,查询速度快,插入、删除慢。
  • LinkedList:基于双向链表,插入、删除快,查询速度慢。
  • Vector:线程安全的动态数组,类似于 ArrayList,但开销较大。

Set 接口:

  • HashSet:基于哈希表,元素无序,不允许重复。
  • LinkedHashSet:基于链表和哈希表,维护插入顺序,不允许重复。
  • TreeSet:基于红黑树,元素有序,不允许重复。

所以网上有些说 Set 是无序集合非常不准确,因为需要看具体的实现类。

Queue 接口:

  • PriorityQueue:基于优先级堆,元素按照自然顺序或指定比较器排序。
  • LinkedList:可以作为队列使用,支持 FIFO(先进先出)操作。

Map 接口:

存储的是键值对,也就是给对象(value)设置了一个 key,这样通过 key 可以找到那个 value。

20220219202845.png

  • HashMap:基于哈希表,键值对无序,不允许键重复。
  • LinkedHashMap:基于链表和哈希表,维护插入顺序,不允许键重复。
  • TreeMap:基于红黑树,键值对有序,不允许键重复。
  • Hashtable:线程安全的哈希表,不允许键或值为 null。
  • ConcurrentHashMap:线程安全的哈希表,适合高并发环境,不允许键或值为 null。

ArrayList 的线程安全版本是什么?

VectorCopyOnWriteArrayList、还可以用 Collections.synchronizedList() 包装。

CopyOnWriteArrayList 是 Java 的一个线程安全的动态数组实现,属于 java.util.concurrent 包。它通过写时复制机制,即在每次修改(写入)操作时,复制原始数组的内容来保证线程安全。

由于写操作涉及复制整个数组,所以它的写操作开销较大,但读取操作则完全无锁。这使得 CopyOnWriteArrayList 适合于读多写少的场景。

Collections.synchronizedList是一个包装方法,可以将任何 List 转换为线程安全的版本,它会对每个访问方法(如 get, set, add, remove)进行同步(加 synchronized 锁),从而保证线程安全。

更多

💻 编程学习交流:编程导航
📃 简历快速制作:老鱼简历
✏️ 面试刷题神器:面试鸭
📖 AI 学习指南:AI 知识库

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐