- 博客(300)
- 资源 (6)
- 收藏
- 关注

原创 『Android春招实习攻略』2022年中总结
春招,即春季招聘,包括春招实习 + 春招补招。具体区别见下图⬇️本攻略主要针对春招实习招聘。一般来说,春招的开始时间为:当年的春节之后。所谓,是指每年-是春招的最佳时间,错过最佳时间,往往各大厂已经招聘得差不多了,此时只能凭借运气捡漏。因此,在复习准备的充分与否投递面试之间要做好权衡。以年春招为例,字节跳动月份即开启了提前批、阿里等大厂则在月份开启了提前批,我自己是正式寒假开始准备的春招实习,正式投递的简历,个人感觉的晚了,大厂的提前批是在就开了。⏬⭕️提前批挂了不会影响正式批,就是相当于你比别人多了一次机
2022-06-11 14:22:29
2068
5

原创 挥手2020 | 齐飞同学年度总结 | 送你一朵小红花
送你一朵小红花????又是一年一度的跨年,这是大学的第二年,是时候在自己的博客上给自己写一写年度总结了,向2020挥手,向2021招手,送你一朵小红花。文章目录送你一朵小红花????疫情在家????大一的你,应该要知道的东西校园经历????你很重要,我一直在疫情在家????实鼠不易,2020突如其来的疫情,让我们隔离在家,我们将网课变成了常课。自己在家就刷了刷acm的例题,不过由于技术堪忧,自己一直刷的都是水题,这也导致我能力有还是很低,菜就是菜,别为菜找借口,这就说我吧!大家想知道我疫情的
2021-01-02 09:56:36
3184
12
原创 C++ decltype 规则推导
用于推导表达式的类型,它会保留表达式的所有类型信息(包括引用、推导结果为该变量的声明类型,包括所有修饰符(如。的推导规则类似模板类型推导,而。推导类型时会忽略引用和顶层。直接反映表达式的静态类型。会保留所有类型信息。
2025-02-10 21:57:34
857
原创 C++11 auto 自动类型推导
可以简化代码,减少冗余类型声明,但需注意推导规则以避免意外行为。:按值推导退化为函数指针;:按值推导时退化为指针;C++14 支持 Lambda 参数使用。(变量自身的常量性)会被忽略,但底层。C++14 允许函数返回类型使用。会推导为初始化表达式的。
2025-02-10 21:56:19
1051
原创 Qt 智能指针
3. 管理私有数据是 Qt 提供的一个智能指针,主要用于简化资源管理,防止内存泄漏和悬挂指针问题。它属于 Qt 的内存管理工具,能够自动处理对象的生命周期,确保对象在超出作用域时被销毁。是基于 C++11 标准中的实现的,但它具有 Qt 的特点,通常用于局部对象的管理。
2025-01-11 21:40:21
1348
原创 C++ 多线程异步操作
使用函数,是多线程操作中最简单的一种方式,不需要自己创建线程对象,并且可以得到子线程函数的返回值。使用类,在子线程中可以传出返回值也可以传出其他数据,并且可选择在什么时机将数据从子线程中传递出来,使用起来更灵活。使用类,可以将子线程的任务函数进行包装,并且可以得到子线程的返回值。
2025-01-10 20:50:41
817
原创 C++ 原子变量
原子变量 () 在 C++11 中的引入,主要用于支持多线程程序中的共享数据的安全操作。通过类型,可以避免使用传统的锁机制来保证线程安全,从而提高程序的并发性和性能。它们的主要用途包括确保多线程环境中共享数据的正确访问,替代锁机制,和在一些低级同步算法中的应用。
2025-01-06 23:42:57
1026
原创 C++线程同步之条件变量
条件变量()是一种线程同步机制,用于在多线程程序中协调线程之间的执行顺序。它通过允许线程在某些条件成立时被唤醒,或者当某些条件不满足时进入等待状态,从而实现线程的协调和同步。与互斥锁(mutex)配合使用,条件变量允许线程在某个条件发生变化时继续执行。
2025-01-05 20:54:50
971
原创 std__invoke 的使用
总结是 C++17 引入的一个标准库函数,用于简化函数调用的语法。它允许你通过统一的接口调用普通函数、成员函数、函数对象或者 Lambda 表达式。这使得在处理不同类型的可调用对象时代码更加简洁和一致。
2025-01-02 22:24:58
479
原创 std optional 的使用
return 42;// 有值} else {// 没有值// 有值// 没有值// 解引用获取值} else {} else {return 0;在这个例子中,get_value函数根据参数的值来返回一个。如果返回值存在,就通过return 42返回一个有值的optional;如果返回值不存在,使用表示返回一个没有值的optional。是 C++17 中非常有用的工具,能够优雅地处理“可能无值”的情况。
2025-01-02 22:15:42
1432
原创 Qt多线程的实现方式
一个QThread对象管理一个线程,一般从QThread继承一个自定义的类,并实现run方法,在run函数中实现线程需要完成的任务。创建一个继承QObject的类MyThread,把要执行的计算放到一个函数中doWork,然后new一个Qthread,并把创建的myThread类movetothread到创建好的子线程中,然后start子线程,这样就实现了一个子线程。该方法并不是线程安全的。这种索允许多个线程同时进行只读访问,但是一旦一个线程想要写入资源,则必须阻止所有其他线程,直到写入完成。
2025-01-02 22:09:24
666
原创 std__call_once 的使用
是 C++11 提供的一个线程安全的机制,能够确保某个函数在多个线程中只执行一次。它通常与一起使用,用于实现线程安全的初始化、单例模式和延迟初始化等。
2025-01-01 21:51:14
961
原创 C++11 thread线程的使用
线程传递参数在 C++ 中,线程的使用通常依赖于标准库(C++11 及以后的版本)。C++11 引入了头文件,提供了丰富的线程操作功能,支持多线程编程。线程可以在 C++ 中以并行的方式运行不同的任务,提高程序的效率,尤其在多核 CPU 环境下。
2024-12-31 00:28:33
748
原创 weak_ptr 智能指针
是 C++11 标准引入的一个智能指针,用来管理共享资源,它与配合使用,能够避免 循环引用 和内存泄漏问题。是一个弱引用,它不会增加引用计数,从而不会阻止对象被销毁。
2024-12-21 23:14:13
1009
原创 unique_ptr 智能指针
是 C++ 标准库中的一部分,位于头文件中。它的“唯一性”(unique)意味着它是独占的,即一个资源(例如动态分配的内存)只能由一个unique_ptr管理。
2024-12-19 00:01:09
347
原创 shared_ptr 智能指针
如果申请的内存是普通类型,通过函数的()可完成地址的初始化,如果要创建一个类对象,函数的()内部需要指定构造对象需要的参数,也就是类构造函数的参数。std::shared_ptr 会通过引用计数来管理对象的生命周期,如果两个 shared_ptr 相互持有对方,形成循环引用,那么它们的引用计数永远不会减少,导致内存泄漏。std::make_shared 是创建 std::shared_ptr 的推荐方法,它同时分配 shared_ptr 和对象的内存,能够提高效率并减少内存分配次数。
2024-12-18 22:16:05
760
原创 转移和完美转发
另外,我们也可以给类编写相应的移动构造函数(T::T(T&& another))和和具有移动语义的赋值函数(T&& T::operator=(T&& rhs)),在构造对象和赋值的时候尽可能的进行资源的重复利用,因为它们都是接收一个右值引用参数。使用这个函数并不能移动任何东西,而是和移动构造函数一样都具有移动语义,将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存拷贝。是 C++11 引入的一个标准库函数,主要用于将一个对象标记为“可移动”的状态,从而允许资源的转移而不是复制。
2024-12-17 21:19:10
342
原创 C++ 右值引用
C++11 引入了右值引用 (T&&),允许你“窃取”右值的资源,右值引用就是对一个右值进行引用的类型。通过右值引用的声明,该右值又“重获新生”,其生命周期与右值引用类型变量的生命周期一样,只要该变量还活着,该右值临时量将会一直存活下去。在C++中在进行对象赋值操作的时候,很多情况下会发生对象之间的深拷贝,如果堆内存很大,这个拷贝的代价也就非常大,在某些情况下,如果想要避免对象的深拷贝,就可以使用右值引用进行性能的优化。右值是指临时的、不持久的值,它通常代表一个没有名字的值,或者是一个表达式的结果。
2024-12-16 22:32:31
774
原创 C++ function 可调用对象包装器、绑定器
是 C++ 标准库中的一个函数模板,用于将一个可调用对象(如函数、成员函数、函数对象等)与其参数绑定在一起,生成一个新的可调用对象。这个新的可调用对象可以在稍后的时间点被调用,而不需要再次提供原始参数。是 C++ 标准库中的一个类模板,用于存储、管理和调用任何可调用目标(如函数、lambda 表达式、绑定表达式、函数对象等)。在 C++ 中,可调用对象(Callable Object)是指可以像函数一样调用的对象。提供了一种统一的方式来处理各种可调用对象,使得代码更加灵活和通用。
2024-12-08 22:49:57
733
原创 动态渲染页面爬取
Selenium 是一个强大的开源自动化测试工具,主要用于Web应用程序的测试。它支持多种浏览器(如Chrome, Firefox, Safari, Edge等)和操作系统(包括Windows, macOS, Linux等)。Selenium提供了一个名为WebDriver的API,允许开发者通过编写代码来控制浏览器行为,从而实现网页加载、表单填写、按钮点击等操作的自动化。:这是目前最常用的组件之一,提供了丰富的接口供编程语言调用以操控浏览器。
2024-11-23 20:41:58
1152
原创 Python 操作mysql - 关系型数据库存储
关系型数据库是一种以“关系”的方式来组织和存储数据的数据库。它使用表(也称为“关系”)来表示数据,每个表由一组具有相同性质的列和多行数据组成。数据结构化:数据以表的形式结构化存储,表由行和列组成。行代表记录,列代表字段。主键:每张表都有一个主键,用于唯一标识表中的每一条记录。主键确保数据的唯一性。外键:外键用于建立表与表之间的关系,连接不同表的数据。数据完整性:关系型数据库可以通过定义约束(如主键、外键、唯一性等)来保证数据的完整性和有效性。
2024-11-17 11:19:17
428
原创 Python脚本实现批量文件重命名与清单生成
遍历指定目录下的所有文件:从给定的根目录开始,递归地访问每个子目录。重命名特定后缀的文件:如果发现文件名为@2x.png结尾,则将其改为_2x.png。统一字符:将文件名中的减号替换为下划线。过滤并记录文件:忽略那些已经改名为_2x.png的文件,只记录其余文件到一个名为的新文本文件中。import os# 如果文件名以 @2x.png 结尾,修改文件名为 _2x.pngfile = new_file_name # 更新文件名为新文件名,继续处理后续逻辑。
2024-11-17 11:17:42
373
原创 Android 蚂蚁面经
程序在申请内存时,没有足够的内存空间供其使用,出现内存不够需要占用大量连续内存空间的java对象是大对象,比如很长的字符串和数组,数据库查询结果不使用分页查询导致结果集很大自定义注解详细介绍_cherry-peng的博客-优快云博客_自定义注解。
2024-11-02 00:38:03
1262
2
原创 Android 网易游戏面经
Android 暑期实习—网易游戏自我介绍说说数组和链表的区别判断两个单链表是否相交单链表相交如何找到交点如何判断单链表是否有环什么是二叉树,满二叉树,完全二叉树,各种树的定义烧一根绳子从头烧到尾部,需要1小时,现在有若干条绳子,如何用烧绳子的办法统计1小时15分钟讲一下冒泡排序的原理Java跨平台特性Java虚拟机的内存分布情况,讲一下每个的特点,然后垃圾回收算法什么是内存溢出什么是内存泄露Java是值传递还是引用传递,值传递和引用传递的本质是什么讲讲hashcode和eq
2024-11-02 00:36:05
537
原创 Android 百度面经
(2)用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会警告用户。(1)首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会警告用户该证书不是由权威机构颁发,是不可信任的(浏览器显示https警告)。如果查到了对应的机构,则取出该机构颁发的公钥。就是假设你知道一个点A(x,y),周围有很多人,每个人的点坐标都是二维已知,你如何设计知道A周围的人有哪些人?
2024-11-02 00:34:21
610
原创 Android面试整理
归”意味着边界条件,递归程序必须在适当的时候返回,如何考虑返回条件,来达成最终的结果,掌握这两个字,就能更加深入地理解递归这个思想的精髓。比如:给定一个列表[[1,1],2,[1,1]],连续调用迭代器的next方法,直到hasNext返回false,则遍历的元素依次为[1,1,2,1,1]。虚拟机原理,如何自己设计一个虚拟机(内存管理,类加载,双亲委派);给定一个数组,其中有n个元素,分别为红色、白色和蓝色,请将数组中的元素进行排序,使得颜色相同的元素排在一起,并且颜色顺序为红、白、蓝。
2024-11-02 00:32:27
1093
原创 HTTP篇面试总结
HTTP/1.1 相比 HTTP/1.0 提高了什么性能?HTTP/3 做了哪些优化?HTTP/1.1如何优化?Root CA 为什么不直接颁发证书,而是要搞那么多中间层级呢?HTTP/1.1 相比 HTTP/1.0 提高了什么性能?
2024-11-02 00:23:46
1266
原创 Java集合框架面试指南
特点LinkedHashMap经典用法人生的艰难困苦无法选择,但是可以自己无坚不摧,星光不问赶路人,时间不复有心人常见的一些集合类。
2024-11-02 00:22:55
1236
原创 Android 面试Socket与WebSocket
网络上的两个程序通过以一个双向通讯的链接来实现数据交换,这是一个双端链路,可以实现android的**跨进程通信,**Socket通常用来实现客户端和服务端的连接,一个Socket由一个IP地址和一个端口号唯一确定。支持TCP/UDP协议栈,是长链接,一旦建立起连接将不会主动断掉,除非网络挂掉。
2024-11-02 00:21:00
1036
原创 Android 大疆面经
方法让当前线程陷入“等待”状态,等join的这个线程执行完成后,再继续执行当前线程。主要是用来实现线程 D 在A、B、C都同步执行完毕后执行,方法必须写在synchronized代码块里面。sleep方法,让当前线程休眠不释放锁。适用于一个线程需要等待多个线程的情况。的作用就是等待多个线程同时执行。
2024-11-02 00:19:52
757
原创 Android 滴滴面经
举个通俗点的例子来说,JVM在执行某段代码时,遇到了class A, 然而此时内存中并没有class A的相关信息,于是JVM就会到相应的class文件中去寻找class A的类信息,并加载进内存中,这就是我们所说的类加载过程。期间,在创建代理对象之前,解析注解时候 从该注解类的常量池中取出注解的信息,包括之前写到注解中的参数,然后将这些信息在创建 AnnotationInvocationHandler时候 ,传入进去 作为构造函数的参数。,比如校验符号引用中通过全限定名是否能够找到对应的类?
2024-11-02 00:15:53
1022
原创 Android 斗鱼面经
应用场景:如果⽬标类的数量很多的话,代理类的实现也必然得很多,可能会造成代码量过于庞⼤,可能会增加代码的冗余度…再者,如果⽬标类需要代理的⽅法很多的话,代理类需要对这些⽅法⼀⼀实现代理逻辑,代理类的实现也将会很庞⼤。3、动态代理是实现JDK里的InvocationHandler接口的invoke方法,但注意的是代理的是接口,也就是你的业务类必须要实现接口,通过Proxy里的newProxyInstance得到代理对象。2、静态代理事先知道要代理的是什么,而动态代理不知道要代理什么东西,只有在运行时才知道。
2024-11-02 00:13:10
1262
原创 Android 多线程面试指南
线程安全的实现方法as-if-serial 语义synchronized与原子性synchronized与可见性volatile与可见性volatile与有序性volatile与原子性重入性的实现原理人生的艰难困苦无法选择,但是可以自己无坚不摧,星光不问赶路人,时间不复有心人。
2024-11-02 00:11:24
979
原创 Android 同花顺面经
Activity就像个控制器,不负责视图部分。Window像个承载器,装着内部视图。DecorView就是个顶层视图,是所有View的最外层布局。ViewRoot像个连接器,负责沟通,通过硬件的感知来通知视图,进行用户之间的交互。sub是extends Binder类,相当于可以进行跨进程通信,implement 业务类。AIDL与Messenger、Binder区别。
2024-11-01 22:08:46
612
MinGW.rar亲测可用安全
2020-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人