首页 > 其他分享 >【面经】迟来的八战腾讯系列 —— 七战的复试

【面经】迟来的八战腾讯系列 —— 七战的复试

时间:2024-03-25 22:37:11浏览次数:33  
标签:对象 面经 复试 面试 七战 线程 单例 Flutter 路由

【面经】迟来的八战腾讯系列 —— 七战的复试

本文全文使用GPT4进行排版

【组成】:自我介绍+项目介绍+基础知识+算法题

整个面试过程比较离谱,我突发奇想,去外面的星巴克面试。模拟一下被毕业的全栈程序员找工作的感觉,结果面试到一半,因为我的【小米11pro】太热了,导致自动关闭热点,且无法打开...好在后面比较及时地处理了突发情况。

实际上,这篇博客早就应该写了。但是,由于周末偷懒,加上忙于联系导师和准备评奖材料,便一直拖延至今。

自我介绍

在这里,我必须特别提一下,遇到的这位HR真的非常好,是目前唯一一个真正关心我的自我介绍,并针对我做的项目进行提问的人。虽然显然,我准备得不是很充分,有些问题没能清楚地思考。

但截至写这篇博客的周一,我仍然对于项目的许多细节没有准备好,只能说大三的我确实懒了不少。

项目介绍:Flutter 开发实践

  1. 自定义的NavigationObserver
  • 问:你为什么要用Map来存储一个路由结构呢?Flutter实现路由的原理又是什么呢?

    答:在Flutter的Navigator 2.0中,通过Page类来表示页面。Page类里只保留页面路由相关信息,通过createRoute()方法来创建对应的Route实例。我们定义了一个LifecycleMixin接口,并通过LifecycleStatelessMixin和LifecycleStatefulMixin两个子类来实现这个接口,分别针对无状态和有状态的Widget进行生命周期的绑定和管理。LifeCycle类混入了WidgetsBindingObserver用于生命周期监测,它通过一个从Route到LifecycleMixin的映射和一个队列来管理页面路由的生命周期。

    但实际上,我还是没有完全搞清楚WidgetBinding和element之间的关系,这才是“为什么用Map而不是其他数据结构”的根本原因。—— 立个FLAG,这周学习WidgetBinding。

  1. CachedImageWidget的实现原理
  • 主要是关于图片缓存的处理。CachedImageWidget通过调用flutter_cache_manager库来实现缓存机制。缓存文件默认存储在应用的临时目录中,而文件信息则通过sqflite库在数据库中进行管理。
  1. 安卓和iOS的本地存储及其实现原理
  • 通过Flutter的shared_preferences库进行实现。在安卓平台上,它使用SharedPreferences进行数据存储;而在iOS上,则使用NSUserDefaults。
    关于安卓sharedpreferences的学习

基础知识(java)

在面试中,虽然问及了很多基础知识,但这里只记录我不熟悉的部分。

  1. ClassLoader的线程安全
  • 问:ClassLoader是怎么保证线程安全的?
    答:ClassLoader在加载类的过程中,通过在loadClass方法中使用synchronized关键字来保证线程安全。

算法题

  1. 典中典之单例模式
    单例模式的实现在面试中是一个经典问题。我之前研究过双重检查锁定(Double-Checked Locking,DCL)机制,并了解到其在多线程环境下可能导致的线程安全问题。
  • 问题的根源:Java对象的初始化过程非原子操作,大致可以分为实例化和初始化两个阶段。实例化分配对象内存,初始化则对对象进行具体赋值。由于Java内存模型允许所谓的“重排序”,在没有适当同步措施的情况下,其他线程可能会看到一个还未初始化完成的对象。

  • 解决方案:为了避免这种情况,我们使用volatile关键字修饰单例对象的声明。这样,volatile关键字能防止指令重排序,并确保当对象的引用被线程访问时,对象的构造过程已经完全完成,从而保证了单例模式在多线线程环境中的线程安全性。

总结

看起来排版规整多了,但是似乎有些部分的语法和行文少了一丝来自我这种愚蠢大学生的混乱感。总之按照结果来说八面(其实是二面)也过了,明天正式挑战九面!!!

标签:对象,面经,复试,面试,七战,线程,单例,Flutter,路由
From: https://www.cnblogs.com/ZzTzZ/p/18095554

相关文章

  • 每日面经分享(测试开发经典场景题目)
    1.面试测试场景题目,回答的测试点有哪些?a.功能测试点:确保所测试的功能按照设计要求正常工作。例如,对于电影票预订网站的座位选择功能,测试点可能包括选择连续座位、选择非连续座位、座位已售等情况。b.边界测试点:测试输入值的边界情况,以验证系统在极限条件下的表现。例如......
  • 每日面经分享(操作系统:内存、缓存、硬盘)
    1.用户态和内核态的区别a.用户态和内核态是操作系统中的两种不同的执行模式,用于区分应用程序代码和操作系统内核代码的权限和特权级别。b.用户态是指应用程序运行时所处的执行模式。在用户态下,应用程序只能访问受限资源和执行受限操作,无法直接访问底层硬件或执行特权操......
  • 2024.03.08 校招 实习 内推 面经
    绿*泡*泡VX:neituijunsir  交流*裙,内推/实习/校招汇总表格1、校招&实习|小马智行Pony.ai2024春季校园招聘启动&可转正实习(内推)校招&实习|小马智行Pony.ai2024春季校园招聘启动&可转正实习(内推)2、实习|腾讯2024实习生招聘全球启动(内推)实习|腾讯2024实习生......
  • 408 考研复试【转载】【总结】
     ------------------------------------------------------------------数据结构:http://www.cnblogs.com/yuxiaoba/p/8646169.html-数组和链表的区别。结构上:在内存中连续存储,固定的长度;链式存储结构。访问方式:下标索引进行访问;访问元素时候只能够通过线性方式由前到后顺序的......
  • 测试工程师2024最新面经(持续更新)
    记录一下自己看的一些面试题,有助于自己理解,主要针对大厂笔试和小厂面试,初学者。目录软件测试的两种方法黑盒测试的方法功能测试和接口测试的区别测试可以分为几个阶段兼容性测试以及侧重点软件测试的两种方法黑盒测试和白盒测试。黑盒测试不考虑程序内部逻辑结构和......
  • 复试C++看程序写结果 易错
    复试C++看程序写结果  易错#include<iostream>usingnamespacestd;voidfunction(char*&s1,char*&s2){inti=0;for(;*s1!=*s2;s1++,s2++)i++;//当两个指针同时指向字符'a'时,循环结束,i=7*(s1-1)='\0';*(s2-1)=......
  • 复试C++19真题_看程序写结果_前置++运算符重载 易错
    考察前置++运算符设置为友元函数,这题的坑在于,返回值是不是对象的引用,形参也不是对象的引用,导致自增离开了作用域以后就不在有任何效果。#include<iostream>usingnamespacestd;classC{private:intxx,yy;public:C(intx,inty):xx(x),yy(y){}friendC......
  • 每日面经分享03.22(垃圾回收、内存溢出)
    1.什么是垃圾回收机制a.垃圾回收是一种自动内存管理机制,用于在程序运行时自动释放不再使用的内存空间。b.作用减少内存泄漏和提高程序的性能。2.Python中垃圾回收机制方法a.gc模块:Python提供了gc(GarbageCollector)模块,用于控制和调整垃圾回收机制的行为。通过该模......
  • 复试C++16真题_程序设计1_输出句子中每个单词长度
    输入一行文本,按照相应格式输出每个单词的长度#include<iostream>usingnamespacestd;#include<string>#include<vector>#include<iomanip>intmain(){stringsen="qweasdaxszfsfsddwfas";//getline(cin,sen);如果要把输入的空格的记录......
  • 2024.2.29校招 实习 内推 面经
    绿*泡*泡VX:neituijunsir  交流*裙,内推/实习/校招汇总表格1、校招|影石Insta3602024春季校园招聘启动(内推)校招|影石Insta3602024春季校园招聘启动(内推)2、校招|虹软科技2024届校招春招批通道开启(内推)校招|虹软科技2024届校招春招批通道开启(内推)3、校招|......