2024年Android最新拖不得了,Android11真的要来了,最全适配实践指南奉上,2024年最新百度技术面试几轮

如何成为Android高级架构师!

架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是架构师大局观的形成基础。 你如何具备这种能力呢?一是来自于经验,二是来自于学习。

架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的程度。经验的积累是需要一个时间过程的,这个过程谁也帮不了你,是需要你去经历的。

但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个周期的。这也是我整理架构师进阶此系列的始动力之一。


成为Android架构师必备知识技能

对应导图的学习笔记(由阿里P8大牛手写,我负责整理成PDF笔记)

部分内容展示

《设计思想解读开源框架》

  • 目录
  • 热修复设计
  • 插件化框架设计

    《360°全方面性能优化》
  • 设计思想与代码质量优化
  • 程序性能优化

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Handler().postDelayed({      IToast.show(“你好,我是自定义toast”) }, 3000) W/NotificationService: Blocking custom toast from package com.example.studynote due to package not in the foreground

啥也没显示,只是发出来一个警告。所以不用太过担心,如果实在需要后台显示,就用普通的toast吧!

现在需要 APK 签名方案 v2 ⭐

对于以 Android 11(API 级别 30)为目标平台,且目前仅使用 APK 签名方案 v1 签名的应用,现在还必须使用 APK 签名方案 v2 或更高版本进行签名。用户无法在搭载 Android 11 的设备上安装或更新仅通过 APK 签名方案 v1 签名的应用。

这个介绍已经很明显了吧,如果你的targetSdkVersion修改到30,那么你就必须要加上v2签名才行。否则无法安装和更新。

媒体intent操作需要系统默认相机 ⭐

从 Android 11 开始,只有预装的系统相机应用可以响应以下 intent 操作:

android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE

也就是说,如果我调用intent唤起照相机,使用VIDEO_CAPTURE的action,只有系统的相机能够响应,而第三方的相机应用不会响应了。

val intent=Intent()intent.action=android.provider.MediaStore.ACTION_IMAGE_CAPTUREstartActivity(intent)//无法唤起第三方相机了,只能唤起系统相机

这点对普通的相机应用还是有点打击的,官方给的建议是如果要使用特定的第三方相机应用来代表其捕获图片或视频,可以通过为intent设置软件包名称或组件来使这些intent变得明确。

5G ⭐

Android 11 添加了在您的应用中支持 5G 的功能

新的Android11也是支持了5G相关的一些功能,包括:

  • 检测是否连接到了5G网络

  • 检查按流量计费性

首先是检测5G网络,通过TelephonyManager的监听方法:

private fun getNetworkType(){    val tManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager    tManager.listen(object : PhoneStateListener() {        @RequiresApi(Build.VERSION_CODES.R)        override fun onDisplayInfoChanged(telephonyDisplayInfo: TelephonyDisplayInfo) {            if (ActivityCompat.checkSelfPermission(this@Android11Test2Activity, android.Manifest.permission.READ_PHONE_STATE) != android.content.pm.PackageManager.PERMISSION_GRANTED) {                return            }            super.onDisplayInfoChanged(telephonyDisplayInfo)            when(telephonyDisplayInfo.networkType) {                TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO -> showToast(“高级专业版 LTE (5Ge)”)                TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA -> showToast(“NR (5G) - 5G Sub-6 网络”)                TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE -> showToast(“5G+/5G UW - 5G mmWave 网络”)                else -> showToast(“other”)            }        }    }, PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED)}

如果是5g网络,就免不了要去判断是不是按流量计费的,否则5G的流量可不是开玩笑的。

检测流量计费方法也很简单,监听网络,在回调中判断:

val manager = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager manager.registerDefaultNetworkCallback(object : ConnectivityManager.NetworkCallback() {    override fun onCapabilitiesChanged(network: Network, networkCapabilities: NetworkCapabilities) {      super.onCapabilitiesChanged(network, networkCapabilities)        //true 代表连接不按流量计费        val isNotFlowPay=networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) ||                        networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED)      }})

判断该值,如果为 true,则将连接视为不按流量计费。

后台位置信息访问权限 ⭐

在搭载 Android 11 的设备上,当应用中的某项功能请求在后台访问位置信息时,用户看到的系统对话框不再包含用于启用后台位置信息访问权限的按钮。如需启用后台位置信息访问权限,用户必须在设置页面上针对应用的位置权限设置一律允许选项。

什么意思呢?

在较低版本的Android系统中,当应用获得前台位置信息访问权限时,也会自动获得后台位置信息访问权限。比如我请求一个前台位置访问权限:

requestPermissions(arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), 100)

授权后,就能同时获取前台位置权限和后台位置权限(ACCESS_BACKGROUND_LOCATION)。

但是现在不行了,你必须单独申请后台位置权限,而且,要在获取前台权限之后,顺序还不能乱。

requestPermissions(arrayOf(Manifest.permission.ACCESS_BACKGROUND_LOCATION), 100)

如果在没获取前台权限的时候执行这个获取后台权限的代码会没反应,等获取前台权限(ACCESS_COARSE_LOCATION)之后,申请后台权限就会跳转到一个新的权限页面了,而且必须选择Allow all the time (始终允许)才能获得后台位置权限,看图:

软件包可见性 ⭐

Android 11 更改了应用查询用户已在设备上安装的其他应用以及与之交互的方式。使用新的  元素,应用可以定义一组自身可访问的其他应用。通过告知系统应向您的应用显示哪些其他应用,此元素有助于鼓励最小权限原则。此外,此元素还可帮助 Google Play 等应用商店评估应用为用户提供的隐私权和安全性。

就是说,Android11中,如果你想去获取其他应用的信息,比如包名,名称等等,不能直接获取了,必须在清单文件中添加元素,告知系统你要获取哪些应用信息或者哪一类应用。

比如我这段查询应用信息的代码:

val pm = this.packageManagerval listAppcations: List = pm        .getInstalledApplications(PackageManager.GET_META_DATA)for (app in listAppcations) {    Log.e(“lz”,app.packageName)}

在Android11版本,只能查询到自己应用和系统应用的信息,查不到其他应用的信息了。怎么呢?添加元素,两种方式:

1)元素中加入具体包名

                            …

2)元素中加入固定过滤的intent

                                                

可能还是有人会疑惑,那我的应用是浏览器或者设备管理器咋办呢?我就要获取所有包名啊?放心,Android11还引入了 QUERY_ALL_PACKAGES 权限,清单文件中加入即可。

但是Google Play可不一定能滥用哦,它为需要QUERY_ALL_PACKAGES 权限的应用会提供相关指南,但是还没出来,具体要看后面的消息了。

至于国内应用市场。。。(希望能有个应用市场一统天下好好管理这混乱的市场吧!)

文档访问限制

为让开发者有时间进行测试,以下与存储访问框架 (SAF) 相关的变更只有在应用以 Android 11 为目标平台时才会生效。

上文存储的时候说过可以通过SAF(存储访问框架–Storage Access Framework)来访问公共目录,但是Android11再次升级,部分目录和文件不能访问了,具体如下:

无法再使用 ACTION_OPEN_DOCUMENT_TREE intent 操作请求访问以下目录:

  • 内部存储卷的根目录。

  • 设备制造商认为可靠的各个 SD 卡卷的根目录,无论该卡是模拟卡还是可移除的卡。可靠的卷是指应用在大多数情况下可以成功访问的卷。

  • Download 目录。

无法再使用 ACTION_OPEN_DOCUMENT_TREE 或 ACTION_OPEN_DOCUMENT intent 操作请求用户从以下目录中选择单独的文件:

  • Android/data/ 目录及其所有子目录。

  • Android/obb/ 目录及其所有子目录。

在元数据文件中声明“无障碍”按钮使用情况

从 Android 11 开始,您的无障碍服务无法在运行时声明与系统的“无障碍”按钮的关联。如果您将 AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON 附加到 AccessibilityServiceInfo 对象的 flags 属性,框架就不会将“无障碍”按钮回调事件传递给您的服务。

做过无障碍辅助功能的应该都知道AccessibilityServiceInfo要设置flag为FLAG_REQUEST_ACCESSIBILITY_BUTTON,getAccessibilityButtonController方法获取辅助功能按钮控制器,并且可用于查询辅助功能按钮的状态并注册监听器以进行交互和辅助功能按钮的状态更改。

但是,Android 11开始,这样写不能获取辅助按钮回调事件了,得换成另外一种写法。在元数据文件(通常为 res/raw/accessibilityservice.xml)中使用 flagRequestAccessibilityButton 标记声明您的无障碍服务与“无障碍”按钮的关联。

设备到设备文件传输

如果您的应用以 Android 11 为目标平台,您将无法再使用 allowBackup 属性停用应用文件的设备到设备迁移。系统会自动启用此功能。不过,即使您的应用以 Android 11 为目标平台,您也可以通过将 allowBackup 属性设置为 false 来停用应用文件的云端备份和恢复。

android:allowBackup属性

  • 代表是否允许应用参与备份和恢复基础架构。如果将此属性设为 false,则永远不会为该应用执行备份或恢复,即使是采用全系统备份方法也不例外(这种备份方法通常会通过 adb 保存所有应用数据)。此属性的默认值为 true。

所以这里是不能停用文件的设备到设备迁移,但是可以停用云端备份和恢复。

自动重置权限

如果应用以 Android 11 为目标平台并且数月未使用,系统会通过自动重置用户已授予应用的运行时敏感权限来保护用户数据。此操作与用户在系统设置中查看权限并将应用的访问权限级别更改为拒绝的做法效果一样。如果应用已遵循有关在运行时请求权限的最佳做法,那么您不必对应用进行任何更改。这是因为,当用户与应用中的功能互动时,您应该会验证相关功能是否具有所需权限。

官方说明说的很清楚了,而且只要应用遵循有关在运行时请求权限的最佳做法,也就是每次需要调用权限的时候都会去判断,那么就不会有什么问题。

如果需要关闭这个功能怎么办呢?只有引导用户去设置页面关闭了,可以调用包含Settings.ACTION_APPLICATION_DETAILS_SETTINGS action的 Intent将用户定向到系统设置中应用的页面。

怎么检查应用是否停用自动重置功能呢?

调用 PackageManager的isAutoRevokeWhitelisted()方法。如果此方法返回 true,代表系统不会自动重置应用的权限。

前台服务类型

从 Android 9 开始,应用仅限于在前台访问摄像头和麦克风。为了进一步保护用户,Android 11 更改了前台服务访问摄像头和麦克风相关数据的方式。如果您的应用以 Android 11 为目标平台并且在某项前台服务中访问这些类型的数据,您需要在该前台服务的声明的 foregroundServiceType 属性中添加新的 camera 和 microphone 类型。

举例,如果应用某项前台服务需要访问位置信息、摄像头和麦克风,那么就这样添加:

    <service …        android:foregroundServiceType=“location|camera|microphone” />

3适配Android11手机

此模块的修改内容针对所有项目在Android11手机上存在的改动,与targetSdkVersion无关。

数据访问审核 ⭐

为了让应用及其依赖项访问用户私密数据的过程更加透明,Android 11 引入了数据访问审核功能。借助此流程得出的见解,您可以更好地识别和纠正可能出现的意外数据访问。

哪些范畴属于用户私密数据呢?

其实就是危险权限的调用,所以这个功能就是提供了可以监听危险权限调用的监听。

主要涉及到的方法是AppOpsManager.OnOpNotedCallback。无论是应用本身,还是依赖库或者SDK中的代码,只要访问到私密数据(危险权限),都会回调给我们。

对于工程庞大或者使用较多SDK的工程比较适合用上这个功能,让自己应用的私有数据管理更加透明规范,否则对于私有数据的使用和管理并不全面和方便。而且还可以对权限使用添加归因,也就是一个tag,标志权限用到了什么地方。方便回调的时候知晓哪里使用了私有数据。

🌰来:

override fun onCreate(savedInstanceState: Bundle?) {    super.onCreate(savedInstanceState)    setContentView(R.layout.activity_test1)    //创建归因(attribute)      attributionContext = createAttributionContext(“shareLocation”)    //监听事件    val appOpsCallback = object : AppOpsManager.OnOpNotedCallback() {        private fun logPrivateDataAccess(                opCode: String, attributionTag: String, trace: String) {            Log.i(TAG, "Private data accessed. " +                    “Operation: KaTeX parse error: Undefined control sequence: \n at position 7: opCode\̲n̲ " +           …attributionTag\nStack Trace:\nKaTeX parse error: Expected 'EOF', got '}' at position 16: trace")        }̲        overrid…{location.latitude}”)    }}

该例子主要展示了一个获取位置信息的功能,如果调用到getLocation方法,就会触发onNoted回调,回调信息包括危险权限code以及归因。

其中OnOpNotedCallback 一共三个回调方法:

  • onNoted 正常情况下都会回调到该方法

  • onAsyncNoted 如果数据访问并非发生在应用调用API期间,就会调用onAsyncNoted(),比如一些监听器的回调。

  • onSelfNoted 在极少数情况下,如果应用将自身的UID传递到 noteOp(),需要调用 onSelfNoted()。

最后点击按钮,看下回调的结果日志:

Private data accessed. Operation: android:coarse_location     Attribution Tag:shareLocation    Stack Trace:    [Ljava.lang.StackTraceElement;@14f5a16

可以看到权限代码:android:coarse_location 以及归因 shareLocation

单次授权

在 Android 11 中,每当应用请求与位置信息、麦克风或摄像头相关的权限时,面向用户的权限对话框会包含仅限这一次选项。如果用户在对话框中选择此选项,系统会向应用授予临时的单次授权。

简单的说,就是在申请与位置信息、麦克风或摄像头相关的权限时,系统会自动提供一个单次授权的选项,只供这一次权限获取。然后用户下次打开app的时候,系统会再次提示用户授予权限。这个影响应该不大,只要我们每次使用的时候都去判断权限,没有就去申请即可。

放一张新版本权限获取样式:

image.gif

权限对话框的可见性

Android 11 建议不要请求用户已选择拒绝的权限。在应用安装到设备上后,如果用户在使用过程中屡次针对某项特定的权限点按拒绝,此操作表示其希望“不再询问”。

这个都算不上改动,只是官方的一个良好建议。建议在用户多次拒绝之后,不要再展示权限申请。

Scudo Hardened Allocator

Android 11 在内部使用 Scudo Hardened Allocator 为堆分配提供服务。Scudo 能够检测并减轻某些类型的内存安全违规行为。如果您在原生代码崩溃报告中发现与 Scudo 相关的崩溃(例如 Scudo ERROR:),请参阅 Scudo 问题排查文档。

Scudo是一种动态的用户模式内存分配器,旨在抵御与堆相关的漏洞,同时保持良好的性能。它是一个开源的项目。Android 11中,将采用这个新的heap分配器,性能更好,更安全。

文件描述符排错程序

Android 10 引入了 fdsan(文件描述符排错程序)。fdsan 检测错误处理文件描述符所有权的错误,例如 use-after-close 和 double-close。在 Android 11 中,fdsan 的默认模式发生了变化。现在,fdsan 会在检测到错误时中止,而以前的行为则是记录警告并继续。

问题来了,fdsan是啥?先要了解fd是啥

文件描述符(FileDescriptor) 是Unix/Linux系统文件操作的相关概念,它在形式上是一个非负整数。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。系统的进程也就是使用了这个fd来标示打开的文件,有了它就能对文件做各种操作,获得文件的各种相关信息了。

所以fdsan也就是检测文件处理中发生的一些错误。

应用使用情况统计信息

为了更好地保护用户,Android 11 将每个用户的应用使用情况统计信息存储在凭据加密存储空间中。

这就涉及到了UsageStatsManager,UsageStatsManager是Android提供统计应用使用情况的服务。通过这个服务可以获取指定时间区间内应用使用统计数据、组件状态变化事件统计数据以及硬件配置信息统计数据。

比如queryAndAggregateUsageStats方法,可以获取指定时间区间内使用统计数据,以应用包名为键值进行数据合并。

但是在Android 11 设备中,不好意思,不能随意使用这些信息了。只有当isUserUnlocked()方法返回true的时候,才能正常访问这些数据。也就是以下两种情况:

  • 用户在系统启动后首次解锁其设备

  • 用户在设备上切换到自己的帐号

JobScheduler API 调用限制调试

JobScheduler任务调度器,可以在设备空闲时做一些任务处理。Android11中如果你设置为debug模式(debuggable 清单属性设置为 true),超出速率限制的JobScheduler API调用将返回 RESULT_FAILURE。这个有什么用呢?应该可以帮助我们发现一些性能问题,感兴趣的可以自己试试。

顺便提下,Jetpack组件WorkManager也是用到了JobScheduler,不熟悉的同学可以去了解下,JobScheduler是由SystemServer进程启动的一个系统服务,所以才可以有这么大的权限。

无障碍操作

在以前的 Android 版本中,框架会向未正确处理基于点击的无障碍操作的微件分派触摸事件。通常,这些视图会直接处理触摸事件,而不是注册点击监听器。为了在正确定义无障碍操作的应用中创建更一致的行为,Android 11 绝不会分派触摸事件。相反,系统会完全依赖于基于点击的无障碍操作:ACTION_CLICK 和 ACTION_LONG_CLICK。此更改会影响屏幕阅读器的行为。

在Android手机上有个预安装的屏幕阅读服务,叫做TalkBack,为视力障碍人士或者视力状态不佳的老年人提供。那我们应用为了让这个阅读器能够读懂你的自定义view操作,必须给与自定义控件定义处理程序,包括点击,长按等操作。

原来版本可能对于OnTouchListener也支持无障碍触摸事件,而在Android11中,必须专门制定点击或者长按事件才行了。给个🌰:

class TriSwitch(context: Context) : Switch(context) {    // 0, 1, or 2.    var currentState: Int = 0        private set    init {        updateAccessibilityActions()    }    private fun updateAccessibilityActions() {        ViewCompat.replaceAccessibilityAction(this, ACTION_CLICK,            action-label) {            view, args -> moveToNextState()        })    }    private fun moveToNextState() {        currentState = (currentState + 1) % 3    }}

一个自定义控件TriSwitch,继承自Switch,由于和Switch的点击效果不一样,所以必须通过替换 ViewCompat.replaceAccessibilityAction() 来重新定义相应的无障碍操作。

非SDK接口限制

Android 11 包含更新后的受限制非 SDK 接口列表(基于与 Android 开发者之间的协作以及最新的内部测试)。在限制使用非 SDK 接口之前,我们会尽可能确保提供公开替代方案。

老样子,Android11也会限制一些接口,包括灰名单和白名单,具体看非SDK接口列表。

4总结

一路分析下来也可以看到,如果是重要的改动,特别是涉及到崩溃的改动还是放到了targetSdkVersion=30的内容中,这也是每次Android发版的一个潜规则吧,为了最大程度不影响已上线的app所作出的举动。

但是,这并不意味我们就可以不改。

因为应用可拖不起,用户可拖不起,毕竟升级才能给到用户最好的体验。而且各大应用市场也都会建议或者强制应用升级targetSdkVersion,以便适配最新的手机。

所以,行动吧。
###该如何进阶
要梳理:Android核心知识点(15天时间,读完这本pdf)

关于第一步要梳理,实际上就是面试过程中,发现自己的知识储量是比较杂乱的,不知道面试官下一个会问什么,所以对于Java 的知识点有一个清晰的梳理是很有必要的。关于Java核心知识点,手上也有一本整理好的pdf文档,需要这份文档的可以直接我私信获得~

这份文档涵盖了很多知识技术点,囊括了Activity、数据储存、屏幕适配、消息机制、线程异步、webview、进程、ipc、数据储存等大量知识点,每一个知识点都有非常详细的解析。

第二步要飞跃:恶补+刷题

关于第三步,就是要做到让自己有一个质的飞跃。对于恶补和刷题这两个方面,我自己也整理了我个人的一些资料,也是我自己的一些做法,希望具有参考性:

  • 其他相关的实战电子书

  • 大厂面试题题库:BAT、字节跳动、美团、网易、拼多多、滴滴等

结尾:锦上添花

设计模式学习笔记

设计模式系列学习视频

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

设计模式学习笔记

[外链图片转存中…(img-DDRT1an6-1715677495378)]

设计模式系列学习视频

[外链图片转存中…(img-ecm3wyHq-1715677495378)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了满足广大Android开发爱好者与从业者的学习需求,我们精心整理并上传了一份全面而实用的Android项目资源包。这份资源包内容丰富,涵盖了从基础知识到实战应用的全方位内容,旨在为开发者们提供一个便捷、高效的学习平台。 一、文件手册 资源包中的文件手册部分,详细记录了Android开发的核心知识点和常用技术。无论是初学者还是有一定经验的开发者,都能从中找到所需的学习资料。手册采用了简洁明了的排版方式,使得查阅更加方便快捷。同时,手册内容深入浅出,既适合新手入门,也能为老手提供有价值的参考。 二、项目实战与练习 为了让学习者能够将理论知识与实践相结合,我们特别准备了项目实战与练习部分。这部分内容包含了多个精心设计的Android项目案例,从需求分析、设计思路到实现过程,都有详细的讲解和代码示例。学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了一系列练习题,旨在巩固所学知识,检验学习成果。这些练习题既有基础题,也有难度较高的挑战题,适合不同层次的学习者进行练习。 三、Android开发工具集 在Android开发过程中,选择合适的工具能够大大提高开发效率。因此,我们整理了常用的Android开发工具集,包括开发工具、测试工具、性能优化工具等。这些工具都是经过我们精心筛选和测试的,能够帮助开发者们更加高效地进行Android开发工作。 总的来说,这份Android项目资源包是一份不可多得的学习资料,无论你是初学者还是有一定经验的开发者,都能从中受益匪浅。我们希望通过这份资源包,为广大Android开发爱好者与从业者提供一个更加便捷、高效的学习平台,共同推动Android开发领域的发展。
2024前端面试题可能会涉及以下几个方面的内容: 1. HTML/CSS基础知识:包括HTML标签的使用、CSS选择器、盒模型、浮动、定位等基本概念和常见问题。 2. JavaScript基础知识:包括数据类型、变量、运算符、流程控制语句、函数、作用域、闭包等基本概念和常见问题。 3. 前端框架和库:例如React、Vue等,可能会涉及到它们的基本原理、生命周期、组件通信等方面的问题。 4. 前端性能优化:包括减少HTTP请求、压缩和合并文件、使用CDN加速、懒加载、缓存等方面的知识。 5. 前端工程化:包括模块化开发、构建工具(如Webpack)、版本控制(如Git)、自动化测试等方面的知识。 6. 前端安全:包括XSS攻击、CSRF攻击、点击劫持等常见安全问题及其防范措施。 7. 前端跨域问题:包括同源策略、跨域请求的方法(如JSONP、CORS等)以及解决跨域问题的方案。 8. 移动端开发:包括响应式设计、移动端适配、触摸事件、移动端性能优化等方面的知识。 9. Web标准和浏览器兼容性:包括HTML5、CSS3的新特性以及不同浏览器之间的差异和兼容性问题。 10. 数据可视化:包括使用图表库(如Echarts、D3.js)进行数据可视化的基本原理和常见问题。 以上只是一些可能涉及到的内容,具体的面试题目还会根据面试官的要求和公司的需求而有所不同。在准备面试时,建议多做一些实际项目练习,加深对前端知识的理解和应用能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值