vivo一面翻车,整理完这份Java面经分类汇总,我突然悟了

这篇博客详细记录了作者在vivo面试的Java相关问题,涵盖Java基础、集合类、并发、JVM、计算机网络、操作系统等多个方面。尽管一面未过,但整理出的面试经验对其他Java程序员仍有参考价值,尤其是对于准备面试的开发者。
摘要由CSDN通过智能技术生成

前言

这篇记录一下今年在vivo面试的准备所有面经,我给大家简单的做了一个分类汇总,本来是用来为vivo二面提前做准备的,谁知道一面都没过,现在人还在人才库里。 我还是很想去vivo的,希望下次能有机会吧。

img

vivo 面经汇总

Java基础

**1.**JDK JRE

2. Java异常了解吗?说说平时遇到的异常?说出6种常见的java异常。写程序遇到过哪些异常 运行时异常有哪些

3. 面向对象 面对对象的几大特性 多态怎么

4. 修饰符:public;protect;default;private优先级

5. 对string类的理解。stringbuffer 和 stringbuilder

6. 反射机制介绍一下

7. bio,nio,aio分别介绍一下,nio的实现方式

8. 问了public等变量定义修饰词的时间域

9. 问了反射机制,还有问了动态代理的好处和坏处,好处答不上来

10. 接口和抽象类的区别。

11. 有一个public static final的HashMap,里边对象的属性能不能修改?

12. 为什么java 平台无关性 机器码和字节码区别 JVM加载代码的一个流程

13. java数据类型以及自己的应用 自动拆箱和自动装箱以及自己的应用即什么时候用到的,列举几种情况

14. 什么是值传递和引用传递,区别及应用

15. 重载和重写

16. static方法是否能重写,接口和抽象类的区别

17. 你觉得java是一种什么样的语言以及java特性

18. lamda表达式了解吗?1.8新特性有什么?(面试宝典对接口抽象这个问题是错的,过时了)

19. 内存泄露怎么造成的,怎么排查

20. 讲讲final修饰符。

**21.**一个对象占多少内存。

22. 最短路径问题

23. java浅拷贝和深拷贝

24. 内存泄露的原因和处理

25. java反射机制,优点缺点

26. 说说静态变量和非静态变量的区别,用类名调用静态变量和用实例对象调用静态变量有区别吗?非静态方法里可以有静态变量吗?

27. static能不能被重写?

  • 重写方法的目的是为了多态,或者说:重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的。
    语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向子类对象时,通过父类引用调用的依然是父类的static方法,而不是子类的static方法。即:语法上static支持重写,但是运行效果上达不到多态目的

**28.**序列化,反序列化,什么时候用? 如何对一个对象序列化

Java集合类

1. Hashmap底层(数组+链表+红黑树)hashmap为什么线程不安全,如何保证线程安全,就扯到concurrenthashmap hashmap底层实现 多线程会出现什么情况 扩容机制是什么为什么会死锁 如何解决碰撞 Jdk 1.8的优化。为什么使用红黑树,它是如何做到效率优化的? hashmap了解不,原理是什么,位图了解不,跳跃表了解不,红黑树了解不,红黑树插入过程,B+树了解不,B+树特点和插入过程,邻接表和邻接矩阵区别,分别在什么地方用到,插入和查询的流程。

2. concurrenthashmap1.7和1.8的区别;concurrenthashmap说说,它是如何保证线程安全的?jdk1.7的hashentry和segment锁。具体说说segment锁?能讲下ConcurrentHashMap的实现原理么 JDK7或者8都行

3. 常用集合类 实现类

4. list和set区别(重复/不重复)

5. set,list,map(线程安全的map,map怎么实现之类的)

6. 红黑树介绍一下,跟平衡二叉树比较一下,红黑树有哪些应用场景

7. 你常用的数据结构有哪些?

8. 红黑树的特点,AVL树

9. 一致性哈希函数以及hashmap的put方法

10. 数组、二叉搜索树、B树、B+树

11. 堆和栈。堆、栈

12. 二叉树的最大节点个数;2^n-1;

Java并发

1. java创建线程的方式,runnable和callable区别(参数不同)1. java线程的状态有哪些;线程的几种状态

2. wait和sleep的区别;wait和notify的使用场景;

3. 介绍一下volatile以及原理;volatile介绍一下Volatile底层是如何实现的? 说了内存可见性和内存屏障,Volatile是绝对线2程安全的吗?不是,没有保证原子性。volatile关键字在线程通信的问题

4. 介绍一下synchornized以及原理; lock和synchornized的区别;synchronized锁的升级过程?Synchronized,底层是如何实现的?说了monitor对象头,以及两个monitorenter和monitorexit运用于代码块。对象头是存储了哪些信息?说说synchronized的锁优化过程?说了偏向,自旋,轻量和重量。

5. 介绍一下AQS;

6.

在Android中,Vivo手机想要实现应用保活通常涉及到后台服务(Service)的使用,以及一些系统级别的权限请求。下面是一个简单的示例,展示如何创建一个Service并在其中维持长生命周期: ```java // 导入必要的包 import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.util.Log; public class VivoBackgroundService extends Service { private static final String TAG = "VivoBackgroundService"; // 创建一个内部Binder类 public class ServiceBinder extends Binder { VivoBackgroundService getService() { return VivoBackgroundService.this; } } @Override public IBinder onBind(Intent intent) { Log.d(TAG, "onBind called"); return new ServiceBinder(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d(TAG, "onStartCommand called"); // 你的业务逻辑或定时任务可以放在这里,例如轮询、网络请求等 while (true) { try { Thread.sleep(60 * 1000); // 每隔一分钟检查一次 } catch (InterruptedException e) { e.printStackTrace(); } // 更新UI或处理数据... } return START_STICKY; // 让服务保持运行,直到主动杀死 } @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy called"); } } ``` 要启动这个服务,你需要在主Activity或另一个组件中调用`startService(new Intent(this, VivoBackgroundService.class));`。 注意这只是一个基础示例,实际的保活策略可能需要考虑系统级别的保活限制、电池优化等因素,并且某些情况下可能需要申请相应的系统权限,如`android.permission.RECEIVE_BOOT_COMPLETED`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值