Android岗面试,面试完腾讯我才发现这些知识点竟然没掌握全

news2024/11/26 2:22:40

前言

H

点击领取完整开源项目《安卓学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

i~,我是 2020 届物联网专业毕业生,现就读于杭州。谨以此文来记录我的秋招以及入门前端以来的学习历程,如有错误,希望大家能及时提出!

面试情况

前前后后一共面试了 14 家公司的前端岗,按城市划分为:

  • 北京:小米,京东,美团,百度,去哪儿
  • 杭州:阿里,网易,微店,字节跳动
  • 上海:七牛云,哈啰出行
  • 深圳:腾讯,富途,乐信

历时4个月,最终收获了 小米、京东、微店、字节跳动 的offer

二、理解架构

全球有名的架构目前分为四种:

1、Clean架构:一种分层的架构方式,将核心业务(对应domain层)、UI相关(对应presenter层)以及数据加载(对应data层)彼此独立开来,不同的层之间由接口依次连接起来,但却又彼此不了解彼此的具体实现。

2、DCI架构:DCI是数据Data 场景Context 交互Interactions的简称,DCI是一种特别关注行为的模式(可以对应GoF行为模式)。DCI架构真正含义可以归结如下:

  • 1.数据data:是领域对象中代表领域类概念的那部分。

  • 2.场景context:根据运行时即时调用,将活的对象实例带到符合用例需求的场景中

  • 3.交互interactions, 描述需求用户心目中角色的活动算法。

3、DDD领域驱动设计:2004年著名建模专家Eric Evans发表了他最具影响力的著名书籍:Domain-Driven Design –Tackling Complexity in the Heart of Software(中文译名:领域驱动设计 2006年3月清华出版社译本,或称 Domain Driven-Design architecture [Evans DDD])。软件的产生过程是:分析、设计、编程、测试、部署。过去,分析领域和软件设计是分裂的,分析人员从领域中收集基本概念;而设计必须指明一组能在项目中适应编程工具构造的组件,这些组件必须能够在目标环境中有效执行,并能够正确解决应用程序出现的问题。模型设计设计(Model-Driven Design)抛弃了分裂分析模型与设计的做法,使用单一的模型来满足这两方面的要求。这就是领域模型。

4、六边形架构架构:六边形架构(Hexagonal Architecture),又称为端口和适配器架构风格,其中的“六”具体数字没有特殊的含义,仅仅表示一个“量级”的意思,六边形的定义只是方便更加形象的理解。我们知道分层架构的重要作用就是避免耦合的出现,经典分层架构和六边形架构都是分层架构的一种,但是所发挥的作用会有些不同,经典分层架构更多的精力放在抽象的分离上,每个层的职责分的很明确,各个层的依赖关系更加抽象化,从而避免耦合的出现,而在六边形架构中,是用“组件化”的形式来避免耦合的出现,每个业务单元尽可能的最小化,然后把这些业务组件集合起来,用一个锤子把他们都拍扁,所以,在整个集合中,这些小的业务单元都是“平等的”,这种方式用一个词来概括,那就是“扁平化”。

三、设计模式

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

1、设计模式的重要性:

  • 设计模式是高级软件工程师和架构师面试基本必问的项目(先通过面试进入这个门槛我们再谈其它)

  • 设计模式是经过大量实践检验的安全高效可复用的解决方案。不要重复发明轮子,而且大多数时候你发明的轮子还没有已有的好

  • 设计模式是被主流工程师/架构师所广泛接受和使用的,你使用它,方便与别人沟通,也方便别人code review(这个够实在吧)

  • 使用设计模式可以帮你快速解决80%的代码设计问题,从而让你更专注于业务本身

  • 设计模式本身是对几大特性的利用和对几大设计原则的践行,代码量积累到一定程度,你会发现你已经或多或少的在使用某些设计模式了

  • 架构师或者team leader教授初级工程师设计模式,可以很方便的以大家认可以方式提高初级工程师的代码设计水平,从而有利于提高团队工程实力

四、代码形式

  • 这样子解释架构、设计模式应该能让你更加了解它:

  • 我现在要盖一栋房子(需求),房子当然要盖得漂亮大方美观一点去把全国最有名的设师Jack叫过来把我的房子先设计出来让我看一看(架构师),恩Jack果然是老司机设计的我很满意不过这个房子的左边不要盖出来要留出来一部分让我以后的孩子来用,还有右上角要多加个走廊还有房子的院前要留出啦一部分当花园,针对这么多需要更变Jack爽快的答应了,一点也不苦恼因为Jack早就想到会变更偷偷运用了自己总结了一生的方案(设计模式)。好了搬砖的搬砖、砌墙的砌墙、工人们依靠Jack给出的设计愉快的盖着房子(程序员)。

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

以上【历年大厂高级工程师面试题集】、【Android高级进阶教学视频】、【Android高级知识点学习PDF】皆无偿分享给大家。如有需要,点击**【Android架构视频+BATJ面试专题PDF+学习笔记】**即可免费获取。

【Android架构视频+BATJ面试专题PDF+学习笔记】](https://bbs.csdn.net/topics/618156601)**即可免费获取。

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1494171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

逻辑代数基础(二)(卡诺图)

目录 逻辑图表示 卡诺图表示 卡诺图的标准格式 二变量卡诺图 三变量卡诺图 四变量卡诺图 卡诺图表示逻辑函数 从逻辑表达式到卡诺图 逻辑代数的三个规则 代入规则 反演规则 对偶规则 逻辑函数的化简方式 化简逻辑函数的意义 逻辑函数最简表示式的判别标准 公式化简法 并…

java工程师面试突击第二季分布式,Java多线程从基础到并发模型统统帮你搞定

面试准备 不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试: 1. 自我介绍。(介…

Windows安装MySQL8.0详细步骤

目录 一、官网下载MySQL二、将压缩包解压到没有中文和空格的目录下三、设置配置文件四、配置环境变量五、安装初始化mysql服务 一、官网下载MySQL 进入MySQL官网:https://downloads.mysql.com/archives/community/,下载 Windows (x86, 64-bit), ZIP Arch…

全连接神经网络算法原理(激活函数、前向传播、梯度下降法、损失函数、反向传播)

文章目录 前言1、全连接神经网络的整体结构:全连接神经网络模型是由输入层、隐藏层、输出层所组成,全连接神经网络结构如下图所示:全连接神经网络的每一层都是由一个一个的神经元所组成的,因此只要搞清楚神经元的本质就可以搞清楚…

Stable Diffusion 3 技术论文解读:开源能赢得文生图竞赛吗?

在大语言模型领域,闭源模型正在赢得比赛,无论是 OpenAI 还是刚刚发布新模型的 Anthropic,都是闭源模型的代表。 但在文生图领域,开源模型却表现出了足够强的竞争力。 2 周前,开源模型的代表企业 Stability AI 发布了最…

ruoyi-nbcio-plus基于多租户的flowable设计考虑

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址: http://122.227.135.243:9666 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbach…

每日学习总结20240306

每日总结 20240306 1. 断言测试判断 #include <iostream> #include <assert.h> #include <cassert> #include <stdio.h>#define STR_OK "[\x1b[1;32m OK \x1b[0m]" #define STR_FAIL "[\x1b[1;31mFAIL\x1b[0m]"…

CTP-API开发系列之柜台系统简介

CTP-API开发系列之柜台系统简介 CTP-API开发系列之柜台系统简介中国金融市场结构---交易所柜台系统通用柜台系统极速柜台系统主席与次席 CTP柜台系统CTP组件名称对照表CTP柜台系统程序包CTP柜台系统架构图 CTP-API开发系列之柜台系统简介 中国金融市场结构—交易所 我们知道提…

4.2 比多数opencv函数效果更好的二值化(python)

在这里之间写代码&#xff1a; import numpy as np import torch import torch.nn as nn import cv2#1.silu激活函数 class SiLU(nn.Module):staticmethoddef forward(x):return x*torch.sigmoid(x)#2.获得轨道的类 def railway_classes3(img,x1,x2,y1,y2):img2 img[x1:x2, y…

【Flink入门修炼】2-2 Flink State 状态

什么是状态&#xff1f;状态有什么作用&#xff1f;如果你来设计&#xff0c;对于一个流式服务&#xff0c;如何根据不断输入的数据计算呢&#xff1f;又如何做故障恢复呢&#xff1f; 一、为什么要管理状态 流计算不像批计算&#xff0c;数据是持续流入的&#xff0c;而不是…

iOS小技能:苹果开发者申请材料

文章目录 引言I 个人账号申请资料II 公司账号申请所需资料III duns资料提交操作步骤IV 续费引言 https://developer.apple.com/cn/programs/enroll/ 申请过程只能使用同一台设备注册苹果开发者的Apple ID可以转让。注册苹果开发者的在验证身份证信息的时候,必须使用法定姓名拼…

STM32(18)I2C

串口通信缺点 一个设备就需要一个串口&#xff0c;单片机可能没有那么多串口外设 总线/非总线 主机&#xff1a;负责管理总线&#xff0c;可控制波特率、数据的通信方向 波特率&#xff1a;由主机产生波特率信号 数据的传输 每个从机都有7位地址&#xff0c;最后移位是读&a…

3.6IO作业

编写一个伪终端 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <wait.h> void getstring(char* buf,int si…

STM32CubeMX学习笔记12 ---低功耗模式

在实际使用中很多产品都需要考虑低功耗的问题&#xff0c;STM32F10X提供了三种低功耗模式&#xff1a;睡眠模式&#xff08;Sleep mode&#xff09;、停机模式&#xff08;Stop mode&#xff09;和待机模式&#xff08;Standby mode&#xff09;。这些低功耗模式可以有效减少系…

浅谈电子商务企业跨境电商经常要用到的电商API接口接入说明和参数解析

开发电商平台就一定离不开接口&#xff0c;作为产品经理&#xff0c;我们要对接口不要求能实现调用。但要知道接口是什么&#xff0c;有什么用&#xff0c;有哪些要素。 什么是API吗&#xff1f; API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口…

Linux上轻松搞定Docker环境下Nginx安装

Nginx安装 下载Nginx1.10的docker镜像&#xff1a; docker pull nginx:1.10先运行一次容器&#xff08;为了拷贝配置文件&#xff09;&#xff1a; docker run -p 80:80 --name nginx -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/logs:/var/log/nginx -d…

5. 链接和加载(linker and loader)

链接和加载(linker and loader)&#xff1a; linker即链接器&#xff0c;它负责将多个.c编译生成的.o文件&#xff0c;链接成一个可执行文件或者是库文件&#xff1b; loader即加载器&#xff0c;它原本的功能很单一只是将可执行文件的段拷贝到编译确定的内存地址即可&#x…

数据库:创建员工表,实现对员工的管理(增、删、改、查)

#include <myhead.h> int do_add(sqlite3 *ppdb) {int numb;char name[20];double salary;printf("请输入员工信息&#xff1a;numb name salary\n");printf("请输入工号>>>");scanf("%d",&numb);printf("请输入员工姓名…

技术型项目经理和管理型项目经理有何区别?

在项目管理领域中&#xff0c;项目管理岗位涵盖了两种不同职责的角色&#xff0c;即技术型项目经理和管理型项目经理。这两个角色在职责、技能和关注点上存在一定的差异。 技术型项目经理 技术型项目经理通常具备广泛的专业知识和技术背景&#xff0c;他们关注项目的具体技术实…

Win11 24H2什么时候发布-你期待哪些新功能?

Win11 24H2什么时候发布&#xff1f;Win11 24H2的发布日期终于有了确切的消息。微软官方已宣布&#xff0c;这款备受期待的重要更新将在2024年下半年与大家见面。24H2版本的推出无疑将为广大用户带来更加流畅、安全和易用的操作系统体验。接下来跟随小编去看看这个新版本带来哪…