华为笔试/手撕
对华为文化的了解华为的企业文化可以用几个关键词来概括:奋斗、客户至上、团队合作和自我批判。以下是一些具体的特点:
奋斗者文化:华为一直强调“奋斗者为本”,这不仅仅是对员工的期望,也体现在公司对个人的奖励制度上。公司认为,只有通过努力和奋斗,才能在竞争中脱颖而出,创造更大的价值。因此,华为推崇拼搏精神,鼓励员工不断进步。
客户至上:华为在文化中一直强调“以客户为中心”。这意味着华为关注客户的需求和期望,致力于提供最优质的产品和服务。公司倡导通过创新和精益求精来满足客户的需求。
自我批判和持续改进:华为的领导层,尤其是创始人任正非,推崇自我批判的精神。公司鼓励员工、管理层定期反思并查找自己的不足,不断改进,不满足于现状。任正非曾多次提到,华为的成功不仅仅是外部环境使然,更重要的是公司能够在内部自我调整、避免固守错误的做法。
全球化与本地化:华为从创立伊始就立足于全球化发展,强调跨文化的交流与融合。公司在全球范围内设有研发中心,注重本地化的产品设计与服务。
高度的责任感:华为还推崇高度的社会责任感。任正非曾提到,华为不仅仅要在商业上成功,还要在社会和文化层面贡献自己的力量。华为也积极参与公 ...
分布式/高性能/高可用
分布式/高性能/高可用分布式✅CAP理论CAP理论是分布式系统设计中的一个重要理论。
一致性(Consistency):所有节点访问同一份最新的数据副本
可用性(Availability):非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)。
分区容错性(Partition Tolerance):分布式系统出现网络分区的时候,仍然能够对外提供服务。
网络分区:分布式系统中的多节点网络原本是连通的,但因为故障导致某些节点间不连通了,网络分为几块区域。
当网络发生分区后,如果要继续服务的话,P是前提,必须要实现。然后在C和A之间二选一。因此分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。
如果网络分区正常的话(系统在绝大部分时候所处的状态),也就说不需要保证 P 的时候,C 和 A 能够同时保证。
为什么要首先保证P
分布式系统的本质:分区容错性(P)是指系统在网络分区发生时,仍然能够继续提供服务的能力。在分布式系统中,网络分区是不可避免的,因此分区容错性是分布式系统必须具备的基本属性。
保证系统的高可用性:如果不保证分 ...
游戏研发面经
为什么要应聘游戏研发这个岗位玩过哪些游戏?如何设计出一个游戏?UDP在游戏中为什么丢了包不影响在游戏中使用 UDP(用户数据报协议)而丢包不影响游戏体验的原因主要有以下几点:
实时性要求高:许多游戏(特别是在线游戏)需要实时传输数据,保证游戏的流畅性和响应速度。UDP是一种无连接协议,不需要建立连接就能发送数据,传输速度快,延迟低,适合实时数据传输。
数据包丢失容忍度高:游戏中的许多数据(如玩家的位置、动作等)会频繁更新。即使有些数据包丢失了,也很快会被新的数据包覆盖,因此不会对游戏体验造成明显影响。相比之下,TCP需要确认每个数据包的接收,这会导致延迟,影响游戏的实时性。
自定义重传机制:一些游戏会自行实现数据包丢失的检测和重传机制,而不是依赖于底层协议的重传机制。这种方式更灵活,可以根据具体需要决定是否重传丢失的数据包。
不重要的数据:一些数据(如瞬时状态更新)即使丢失也不会对游戏产生重大影响。游戏开发者可以根据数据的重要性选择是否采用UDP来传输这些数据。
这些特点使得UDP在许多需要快速、实时数据传输的游戏中得到了广泛应用。
智力题
8个外形一样的球,其中有一个偏重,如何只通过两次测量找到重球为了在只使用两次测量的情况下找到8个球中偏重的那个球,可以采用以下方法:
将8个球分成3组:
第一组:A、B、C
第二组:D、E、F
第三组:G、H
第一次测量:
将第一组(A、B、C)放在天平的左边,第二组(D、E、F)放在天平的右边。可能的结果有三种:
左边重(A、B、C中有一个是重球)
右边重(D、E、F中有一个是重球)
两边一样重(G、H中有一个是重球)
第二次测量:
如果第一次测量左边重:从A、B、C中任选两个球进行测量,例如A和B。
如果A和B重量相等,则重球是C。
如果A和B不等,则重球是较重的那个。
如果第一次测量右边重:从D、E、F中任选两个球进行测量,例如D和E。
如果D和E重量相等,则重球是F。
如果D和E不等,则重球是较重的那个。
如果第一次测量两边一样重:对G和H进行测量。
如果G和H重量相等,则重球不存在(但由于题意重球必存在,所以这个情况不会出现)。
如果G和H不等,则重球是较重的那个。
通过这种方法,可以在两次测量内准确找到8个球中偏重的那个球。
系统设计
实现多个客户端访问一个服务端使用Socket编程来实现一个简单的客户端-服务端模型。
服务端代码:
1234567891011121314151617181920212223242526272829303132import socketimport threading# 定义服务端的IP地址和端口server_ip = '127.0.0.1'server_port = 12345# 创建Socket对象server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server_socket.bind((server_ip, server_port))server_socket.listen(5) # 最大连接数print(f"服务器启动,监听端口: {server_port}")def handle_client(client_socket): while True: try: message = client_so ...
Python知识点
Python内存模型Python 的内存模型包括几个重要的概念和机制,帮助解释如何管理和操作内存。以下是关键点:
对象模型:在 Python 中,一切皆对象。变量实际上是对对象的引用。对象分为可变对象(如列表、字典等)和不可变对象(如整数、字符串、元组等)。
引用计数:Python 使用引用计数来管理内存。每个对象都有一个引用计数器,当对象被引用时计数加1,当引用被删除时计数减1。当引用计数为0时,对象被回收。
垃圾回收:除了引用计数,Python 还使用垃圾回收机制来处理循环引用。Python 的垃圾回收器会定期检查并回收那些不再被引用的对象。
内存分配器:Python 使用私有堆来管理内存。Python 内存分配器负责从操作系统获取内存并将其分配给对象。常用的内存分配器包括 PyObject_Malloc 和 PyMem_Malloc。
小对象池化:Python 对小对象(通常是小于256字节的对象)进行池化,以提高内存分配和释放的效率。这意味着相同的小对象可能会被多次重用。
全局解释器锁(GIL):GIL 是 Python 的一个机制,用于保护 Python 对象的访问,确保多 ...
C++知识点
C++常用数据结构
数组(Array):数组是固定大小的连续内存块,用于存储相同类型的数据。
动态数组(Vector):std::vector 是一个动态数组,可以根据需要自动调整大小。
栈(Stack):栈是一种后进先出(LIFO)的数据结构。C++ 中可以使用 std::stack 实现栈。
队列(Queue):队列是一种先进先出(FIFO)的数据结构。C++ 中可以使用 std::queue 实现队列。
双端队列(Deque):双端队列允许在两端进行插入和删除操作。C++ 中可以使用 std::deque 实现双端队列。
集合(Set):集合是一种无序且不允许重复元素的数据结构。C++ 中可以使用 std::set 实现集合。
映射(Map):映射是一种键值对的数据结构。C++ 中可以使用 std::map 实现映射。
优先队列(Priority Queue):优先队列是一种元素带有优先级的队列,C++ 中可以使用 std::priority_queue 实现优先队列。
哈希表(Unordered Map):哈希表是一种基于哈希函数的数据结构,用于高效地进行查找、插入和删除操作。 ...
面经汇总
腾讯 WXG - 移动客户端开发 实习基础微信&视频号团队2024/3/19 40多分钟 一面
自我介绍
研究生成绩、本科生成绩
研究生主要专业课
Java - 强引用 弱引用
Java - 垃圾回收机制
TCP连接如何保成可靠性
HTTP状态码
拷打实习、项目
你的开源线上实习主要都做的啥?
你在开源实习过程中遇到的最难的是什么?
你的单点登录系统大前端项目中 主要都做了什么东西?
手撕代码
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。
意向城市是上海,组内基本都在广州,这个你有什么问题吗?
为什么会想要投移动客户端开发?
除了在实习项目中,你还在有通过其他途径了解到移动客户端开发吗?
反问:
面试官您觉得我的表现如何?
组内日常工作?
淘天集团 - 天猫技术部前端 实习2024/3/26 14:00 70多分钟。。感觉好难。。。
面试官介绍部门、自我介绍
自己自我介绍
RN和React的区别
单点登录SSO原理
PKCE
Flutter RN区别,如何实 ...
手撕相关
经典题型链表有序链表合并12345678910111213141516171819202122232425ListNode mergeTwoLists(ListNode l1, ListNode l2) { // 虚拟头结点 ListNode dummy = new ListNode(-1), p = dummy; ListNode p1 = l1, p2 = l2; while (p1 != null && p2 != null) { // 比较 p1 和 p2 两个指针 // 将值较小的的节点接到 p 指针 if (p1.val > p2.val) { p.next = p2; p2 = p2.next; } else { p.next = p1; p1 = p1.next; } // p 指针不断前进 ...
框架
本文参考 JavaGuide
Spring什么是SpringSpring 是一款基于 Java 的轻量级开源开发框架,旨在提高开发人员的开发效率以及系统的可维护性。
Spring 框架(Spring Framework)是很多模块的集合,使用这些模块可以很方便地协助进行开发。Spring 支持控制反转(Inversion of Control, IOC) 和 面向切面编程(Aspect-Oriented Programming, AOP)、可以很方便地对数据库进行访问、可以很方便地集成第三方组件(电子邮件,任务,调度,缓存等等)、对单元测试支持比较好、支持 RESTful Java 应用程序的开发。
Spring的核心功能主要是 IoC 和 AOP,核心思想是不重新造轮子,开箱即用,提高开发效率。
Spring模块
Spring5.x 版本中 Web 模块的 Portlet 组件已经被废弃掉,同时增加了用于异步响应式处理的 WebFlux 组件。
Core Container:Spring 框架的核心模块、基础模块,主要提供 IoC 依赖注入功能的支持。Spring 其他所有的功 ...