vivo开了SSP,还是打算拒了。。。

职场   2024-11-02 14:30   浙江  
大家好,我是启舰。

oppo和vivo号称"手机届的蓝绿双厂",这两家的发展轨迹有点相似,其早期骨干都是出自步步高,虽然在国内市场一线城市一般,名声不响,比不上华为小米苹果这些,但在二三线城市,尤其是乡镇下沉市场和国外很火,尤其是非洲老铁很喜欢这两家的手机。

这段时间两家前后相继开奖了,据牛客网及脉脉上的帖子反映,vivo的offer薪资普遍不符合25届的应届生预期,很多人都认为17k/月的薪资是"劝退价",觉得"低的离谱"。

普遍认为薪资较低

甚至有些人前脚被告知vivo开奖,后脚就打算拒了,哪怕是SSP也不打算接。

vivo开出ssp的offer

根据前几届同学的反馈来说,蓝绿双厂基本入职即巅峰,而且存在加班严重,内卷成风的情况。这里整理总结了vivo今年的校招薪资,分享一下:

  • 白菜价:17k * 15 + 1.5k * 12,总包 27.3 w
  • SP:20k * 15 + 1.5k * 12,总包 31.8 w
  • SSP:23k * 15 + 1.5k * 12(部分有3-5w签字费),总包 36.3w左右

这里分享一下一位同学的 vivo Java 后端的二面面经,面试时间在 50 分钟左右,主要集中在Java基础知识、操作系统、计算机网络、Redis等方面,问题数量不多,且较为基础。

奇怪的是面试官也没问项目,最后让写了两个算法题就结束了。

Java

1、有哪些常见的垃圾回收器,举几个说说?

  • Serial收集器:单线程的垃圾回收器,使用标记-复制算法,适合小型应用程序或客户端应用程序。

  • Parallel收集器:多线程的垃圾回收器,使用标记-复制算法,适合在后台运行的中型应用程序。

  • CMS收集器:并发垃圾回收器,使用标记-清除算法,适合对响应时间有要求的中型应用程序。

  • G1收集器:并发垃圾回收器,使用标记-整理算法,适合对响应时间有要求且堆内存较大的应用程序。

2、Java线程的生命周期有了解吗?

Java线程的生命周期可以分为以下五个状态:

  1. 新建状态(New):当线程对象被创建后,它就处于新建状态。此时它并没有启动,也没有分配CPU资源。
  2. 就绪状态(Runnable):当调用线程的start()方法后,线程进入就绪状态。此时,JVM会为该线程分配必要的系统资源,但是还没有将该线程加入到运行队列中。
  3. 运行状态(Running):当线程获得CPU资源后,就进入了运行状态。在运行状态下,线程会不断地执行run()方法中的代码。
  4. 阻塞状态(Blocked):当线程在执行run()方法时,如果遇到了某些原因导致无法继续执行run()方法中的代码,那么该线程就会进入阻塞状态。在阻塞状态下,线程不会占用CPU资源。
  5. 死亡状态(Terminated):当线程执行完毕或者因异常而终止时,该线程就会进入死亡状态。在死亡状态下,JVM会回收该线程所占用的系统资源。

3、JVM内存分区中对内容主要是用来做什么的?

堆内存是垃圾收集器管理的主要区域,堆内存可以细分为:老年代、新生代(Eden、From Survivor、To Survivor)。

4、讲讲HashMap的扩容机制?

当HashMap中的元素个数超过数组大小(数组长度)*loadFactor(负载因子)时,就会进入扩容阶段。

在扩容阶段,HashMap会重新创建一个新的数组,然后将原来的元素复制到新数组中。

如果原来的元素个数小于等于负载因子乘以当前容量,那么HashMap就不会进行扩容。

Java 8:在Java 8中,HashMap的扩容机制做了一些调整。默认情况下,HashMap的初始容量是16,每次扩容是将容量扩大为两倍。

而且HashMap的容量要时刻保持2的幂次方,因为我们计算出hashcode之后,还要对它进行取模运算,所以容量必须是2的幂次方。

操作系统

5、线程与进程的比较或者说区别?

1、线程比进程启动速度快,轻量级

2、进程的系统开销相较于线程而言更大

3、线程使用有一定难度,需要处理数据一致性问题;进程则无需考虑这个问题

4、同一线程共享的有堆、全局变量、静态变量、指针,引用、文件等,而独自占有栈

6、如果出现多个线程竞争怎么解决?

线程竞争(race condition)是一个常见的问题,当多个线程尝试同时访问和修改共享数据时,就可能发生。

以下是一些解决线程竞争的常见方法:

1、互斥锁(Mutex):使用互斥锁是防止多个线程同时访问共享资源的常见方法。当一个线程获取锁时,其他线程必须等待直到锁被释放。

2、读写锁(Read-Write Lock):如果共享资源的读操作远多于写操作,可以使用读写锁。它允许多个读线程同时访问资源,但写操作是排他的。

3、原子操作:对于简单的数据类型,可以使用原子类型和原子操作来保证操作的原子性,从而避免竞争条件。

此外,还有条件变量、信号量(Semaphore)以及避免共享等多种方式,解决线程竞争问题。

计算机网络

7、说下OSI 的七层模型的主要功能?


  • 物理层:底层数据传输,如网线;网卡标准。
  • 数据链路层:定义数据的基本格式,如何传输,如何标识;如网卡MAC地址。
  • 网络层:定义IP编址,定义路由功能;如不同设备的数据转发。
  • 传输层:端到端传输数据的基本功能;如 TCP、UDP。
  • 会话层:控制应用程序之间会话能力;如不同软件数据分发给不同软件。
  • 表示层:数据格式标识,基本压缩加密功能。
  • 应用层:各种应用软件,包括 Web 应用。

8、TCP和UDP的使用场景有哪些?举例说说

TCP和UDP是两种常用的传输协议,它们分别适用于不同的网络通信场景。

  • TCP协议可靠性较高,适用于数据传输的可靠性要求较高的场景,例如传输大文件或需要确保所有数据都能到达接收端的应用,如FTP、HTTP等应用程序。

  • UDP协议则适用于对实时性要求较高的场景,例如音视频流媒体、在线游戏等 。

9、TCP是全双工还是半双工?

TCP是全双工协议,双方可以同时通信,所以发送方接收方各自维护一个发送窗和接收窗。

  • 发送窗:用来限制发送方可以发送的数据大小,其中发送窗口的大小由接收端返回的TCP报文段中窗口字段来控制,接收方通过此字段告知发送方自己的缓冲(受系统、硬件等限制)大小。
  • 接收窗:用来标记可以接收的数据大小。

Redis

10、单线程的Redis为什么这么快?

主要是有三个原因:

  • Redis的全部操作都是纯内存的操作
  • Redis采用单线程,有效避免了频繁的上下文切换;
  • 采用了非阻塞I/O多路复用机制。

11、缓存中常说的热点数据和冷数据是什么?

其实就是名字上的意思,热数据就是访问次数较多的数据,冷数据就是访问很少或者从不访问的数据。

需要注意的是只有热点数据,缓存才有价值 对于冷数据而言,大部分数据可能还没有再次访问到就已经被挤出内存,不仅占用内存,而且价值不大。

数据更新前至少读取两次,缓存才有意义。这个是最基本的策略,如果缓存还没有起作用就失效了,那就没有太大价值了。

算法

力扣原题:四数之和、平衡二叉树,都是很经典的题,稍加思索就写出来了

反问

问了下业务和加班情况,额,只能说面试官很实诚哈哈哈。

……………………


你好,我是启舰,出过书,创过业、CSDN博客专家、电子工业出版社优秀作家、大厂技术主管、前阿里人。

曾几何时,我也是2500一个月都找不到工作的青涩少年,也是帮别人发传单、做门童,满地找兼职的学生仔。


也曾经处在比大家更差的阶段,只是靠坚持和毅力,把一手烂牌打得看似精彩,相信我,你会更棒。点击蓝字,查看我的编程之路


开放一下个人微信,小伙伴可以加,名额有限,先到先得,再满就真没了
扫描下方二维码即可加我微信啦,
2024,抱团取暖,一起牛逼。

启舰杂谈
关注计算机领域大学生学习方法、学习路线、职业规划、职场、创业与圈内的一些秘密。
 最新文章