OPPO互联网java后端二面题目

1、MVCC多版本并发控制

答:记录数据的版本变迁,通过精巧的选择不同数据的版本从而能够对用户呈现一致的结果。多个事务更新相同数据时,各自都会生成一份对应数据的快照

2、事务的ACID,每项是如何保证的

原子性:通过redo log来保证,回放redo log。
一致性:通过undo log,回滚机制来保证。
隔离性:通过lock来保证,锁是用来实现并发控制,并发控制用来实现隔离级别,隔离级别是通过锁来控制的,锁的目的为了使得事务之间的执行是序列化的。
持久性:是通过redo log来保证的。


3、1个url对应1个random值,设计1个系统根据url查询random值,表怎么设计,索引怎么加,代码怎么写
4、tcp握手挥手过程,以及socket的状态变化
5、close_wait和time_wait 说一下

TIME_WAIT:在完成一个任务之后,他就 会发起主动关闭连接,从而进入TIME_WAIT的状态,然后在保持这个状态2MSL(max segment lifetime)时间之后,彻底关闭回收资源。为什么要这么做?。
1.防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)
2. 可靠的关闭TCP连接。在主动关闭方发送的最后一个 ack(fin) ,有可能丢失,这时被动方会重新发fin, 如果这时主动方处于 CLOSED 状态 ,就会响应 rst 而不是 ack。所以主动方要处于 TIME_WAIT 状态,而不能是 CLOSED 。另外这么设计TIME_WAIT 会定时的回收资源,并不会占用很大资源的,除非短时间内接受大量请求或者受到***。
大量的TIME_WAIT可以让服务器能够快速回收和重用那些TIME_WAIT的资源,修改/etc/sysctl.conf的一些配置参数。

CLOSE_WAIT:被动关闭。如果有大量出现,如果一直保持在CLOSE_WAIT状态,那么只有一种情况,就是在对方关闭连接之后服务器程
序自己没有进一步发出ack信号。换句话说,就是在对方连接关闭之后,程序里没有检测到,或者程序压根就忘记了这个时候需要关闭连接,于是这个资源就一直
被程序占着。个人觉得这种情况,通过服务器内核参数也没办法解决,服务器对于程序抢占的资源没有主动回收的权利,除非终止程序运行。
 

6、java里面的红黑树是怎么实现的
7、说一下struct2的理解,和springMVC的不同在哪里
8、长连接和短链接有什么区别

短连接:短连接是指SOCKET连接后,发送接收完数据后马上断开连接。 因为连接后接收了数据就断开了,所以每次数据接受处理不会有联系。 这也是HTTP协议无状态的原因之一。
长连接:连接->传输数据->保持连接 -> 传输数据-> …………->直到一方关闭连接,多是客户端关闭连接。 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。


9、堆的结构、堆和树的区别
10、集合set实现Hash怎么防止碰撞

如果hash码值不相同,说明是一个新元素,存储;如果hash码值相同,且equles判断相等,说明元素已经存在,不存;如果hash码值相同,且equles判断不相等,说明元素不存在,存。

11、数据一致性如何保证
12、如何保证多线程读取文件的安全

一、多个线程操作FileWriter或者BufferedWriter时,每一次写入操作都是可以保证原子性的,也即:FileWriter或者BufferedWriter是线程安全的。
二、使用FileChannel的独占锁tryLock()、共享锁tryLock、独占锁lock()。FileInputStream、FileOutputStream、RandomAccessFile均可得到FileChannel对象,对文件锁进行操作。


13、多线程断点续传原理

1.多线程下载,就是将要下载的文件分成多份,每个线程下载一份,然后在客户端合成最后的文件;
2.断电续传,下载的时候记录下来下载的长度,当再次启动下载的时候在当前长度下再往后下载。就是文件还没有下完,但是由于种种原因,连接断开了,此时不需要重新下载整个文件,只需要下载还没有下载的。

14、对象锁和类锁是否会互相影响

一个是类的Class对象的锁,一个是类的实例的锁。也就是说:一个线程访问静态synchronized的时候,允许另一个线程访问对象的实例synchronized方法。反过来也是成立的,因为他们需要的锁是不同的,因此类锁和对象锁不会产生竞争,二者的加锁方法不会相互影响。

15、谈谈对java状态机的理解
16、spring是怎么传播事务的

-由于Spring的事务管理是通过线程相关的ThreadLocal来保存数据访问基础设施的(Connection对象),再结合IoC和AOP实现高级声明式事务的功能。
将事务封装为切面加入到AOP的执行链中,因此会调用到MethodInceptor的实现类的invoke方法,而事务切面的Interceptor就是TransactionInterceptor。


17、IO模型有哪几种
18、LinkList为什么使用双向链表

从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。
在按下标访问时,也是比较size的一半,然后从头或者从尾遍历。


19、怎么实现一个无法被反射的单例模式

使用枚举单例类,反射在通过newInstance创建对象时,会检查该类是否ENUM修饰,如果是则抛出异常,反射失败。


20、一个私有的方法,AOP可以拦截吗

jdk是代理接口,私有方法必然不会存在在接口里,所以就不会被拦截到; 
cglib是子类,private的方法照样不会出现在子类里,也不能被拦截。 
如果想要实现拦截private方法的 可以使用 原生 AspectJ 编译期/运行期织入。


21、你是怎么排查内存溢出问题的
22、你们项目中是怎么使用反射的
23、高并发时你是怎么确认多少个线程合适的
24、mysql表示时间有几种方式?你们用哪一种?为什么?

mysql(5.5)所支持的日期时间类型有:DATETIME、 TIMESTAMP、DATE、TIME、YEAR。
DATETIME 用于表示 年月日 时分秒,是 DATE 和 TIME 的组合,并且记录的年份(见上表)比较长久。如果实际应用中有这样的需求,就可以使用 DATETIME 类型。
TIMESTAMP 用于表示 年月日 时分秒,但是记录的年份(见上表)比较短暂。TIMESTAMP 和时区相关,更能反映当前时间。当插入日期时,会先转换为本地时区后再存放;当查询日期时,会将日期转换为本地时区后再显示。所以不同时区的人看到的同一时间是  不一样的。如果记录的日期需要让不同时区的人使用,最好使用 TIMESTAMP。

25、java有没有闭包的概念?举个例子
26、用过NIO吗?举个例子
27、zookeeper用过吗?怎么实现的?
28、集群要考虑什么?
29、mysql数据库的引擎有哪些区别是什么?
30、java如何调用C、C++语言
31、TCP和UDP有什么区别?
32、为什么索引能加快查找效率?
33、说说B+树是怎么分裂的、合并的,知道具体的步骤逻辑吗
34、redis的跳跃表知道吗?怎么实现的,查找时间复杂度?为什么用跳表实现zset

https://blog.csdn.net/u012834750/article/details/108369656


35、如果磁盘操作很高,但CPU很低,是什么原因
36、https的连接细节,证书是怎么颁发的,作用?
37、Redis主从复制的过程?
38、数据一致性是如何保证的?
39、MyBatis二级缓存原理?
40、消息队列的选型?
41、RabbitMQ集群模式下主宕机了如何选主?
42、线上机器CPU突然增高如何处理
43、接口不定时出现高时延如何处理?
44、支付没有通知会怎么处理?
45、nginx作用有哪些?nginx和网关的关系是什么?
46、同一个域名复用1个连接是如何实现的?
47、服务间丢包、传输速度慢,如何去解决?
48、微信红包算法
49、RabbitMq发生脑裂怎么处理?
50、为什么用静态内部类?
51、当前读和快照读?
52、Spring是如何实现事务管理的?
53、http response响应头有什么?用buffer写一个响应头的结构及解析
54、paxos是什么?
55、OSI有哪七层模型?TCP/IP是哪四层模型?
56、binlog、redolog和undolog都是什么,起什么作用?
57、有没有了解JVM的逃逸分析技术?
58、DDOS攻击,怎么防御?

59、springboot自动装配?

60、如果有大小1G的视频,应该怎么上传,上传失败时需要重新上传吗?

61、自旋锁场景下,如果某个线程一直拿到不锁,有什么解决方法?

62、select和epoll的区别;水平触发和边缘触发?

63、操作系统 知道虚拟内存吗为什么需要虚拟内存?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为OPPO硬件工程师笔试题目,我将尽力回答以下问题。 首先,作为一个硬件工程师,我需要具备哪些技能和知识? 作为硬件工程师,我需要具备电路设计和分析的能力,能够熟练运用电路设计软件,并掌握常用的模拟电路和数字电路设计原理。此外,我还需要了解硬件系统的结构和组成,能够设计和调试硬件系统,包括处理器、存储器和外围设备。 其次,我需要具备哪些工作经验和项目经历? 作为一个合格的硬件工程师,丰富的工作经验和项目经历至关重要。我希望在自己的简历中能够展示出我在硬件设计和开发方面的实际经验,包括参与过的项目、所负责的任务以及取得的成果。此外,我还希望能够提及我在工作中遇到的困难,并展示我解决问题的能力和创新思维。 然后,我对OPPO的硬件工程师职位有何了解? 作为OPPO的硬件工程师,我认为这是一个有机会在手机硬件设计和开发方面发展的机会。OPPO作为一家知名的手机生产商,注重于技术创新和产品质量,因此,作为一名硬件工程师,我将能够在这个岗位上得到丰富的实践经验和技术提升机会。 最后,我为什么适合OPPO的硬件工程师职位? 作为一名有着扎实的电子工程背景和相关工作经验的硬件工程师,我相信我对电路设计和硬件系统有着深入的理解和熟练的操作能力。同时,我具备解决问题和创新思维的能力,并且对手机硬件设计和开发有着浓厚的兴趣。在OPPO这样一个注重技术创新的公司,我相信我能够在这个岗位上表现出色,并为公司的发展做出积极的贡献。 以上就是对于OPPO硬件工程师笔试题目的回答,希望能够满足要求。感谢您的考虑和机会。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值