我被裁了,那就是大环境不好?

142 阅读8分钟

前言

2023年底,我和整个部门都被公司裁了。其实,这个结果我早有预感。在公司追求降本增效的压力下,我们这些既不是正式员工也不是外包员工的员工,就像是随时可以丢弃的棋子。

去年开始,公司就逐步减少了我们的福利,比如取消了免费餐饮。国庆前,我和同事们还在议论,华为现在只招外包员工,还有同事的项目突然被接手,我们甚至要面试很多外包候选人。这些迹象都告诉我们,裁员的日子不远了。

不过,公司还算有良心,给了我们正常的赔偿,还给了我们一个月的缓冲期。这期间,公司还继续为我们缴纳社保和公积金,年终奖也算在内。虽然被裁了,但我还是觉得这家公司不错。如果有机会,我还是愿意再为它效力。

现在大家都说就业环境不好,可能是因为IT行业的人太多了。但我不信找不到工作。就像有人说的,有时候得找找自己的原因,比如工资为什么没涨,工作是否认真努力

原因

我觉得现在就业难主要有几个原因:

一是学历要求高,很多公司直接要求本科及以上,不是全日制统招的可能就没机会;

二是有些人期望太高,在大厂待过就看不上小公司;

三是表达能力差,简历不会写,面试也不会说,这都会影响找工作。但不管怎样,生活还得继续,我还是得努力找工作。

庆幸的是我很快就拿到了几个offer,无缝衔接,虽说不是很完美,但是年前能找到工作我也很满足了。

最后

分享近几个月来面试中整理的面试题

  1. 如何优化ListView的流畅度?
  • 精简Item布局,减少层级。
  • 复用convertView
  • 使用ViewHolder
  • 图片异步加载。
  • 快速滑动时不加载图片。
  • 图片压缩。
  • 分页加载数据。
  1. Android安全问题的常见类型有哪些?
  • 错误导出的组件。
  • 不严格的参数校验。
  • WebView引入的安全问题。
  • 不混淆、不防二次打包。
  • 明文存储敏感信息。
  • 错误使用HTTPS。
  • 自定义加密方法的安全性。
  • 滥用权限、内存泄露、使用debug签名。
  1. 如何减小APK大小?
  • 移除重复或未使用的代码。
  • 使用ProGuard混淆代码。
  • 仅支持必要的CPU架构。
  • 使用Lint查找未使用的资源。
  • 压缩图片。
  • 选择性地提供不同分辨率的图片资源。
  • 重用资源。
  • 使用代码绘制代替大量图片。
  1. 对称加密与非对称加密在Android与服务器交互中的应用是什么?
  • 对称加密:使用相同的密钥进行加密和解密,如AES。
  • 非对称加密:使用公钥加密,私钥解密。如RSA。用于安全地交换密钥或签名数据。
  1. 设备横竖屏切换时发生了什么?
  • 不设置android:configChanges时,会重新调用生命周期方法。
  • 设置android:configChanges="orientation"时,仍会重新调用生命周期方法,但次数减少。
  • 设置android:configChanges="orientation|keyboardHidden"时,仅调用onConfigurationChanged
  1. Service的两种启动方式及其适用场景是什么?
  • Started Service:通过startService(Intent)方法启动。当Service启动后,即使启动它的组件(如Activity)已经销毁,Service依然会在后台运行。适用于执行长时间运行的操作,如音乐播放、文件下载等。
  • Bound Service:通过bindService(Intent, ServiceConnection, int)方法启动。客户端(如Activity)可以与Service建立连接,进行交互。适用于需要频繁与Service通信的场景,如远程过程调用(RPC)。
  1. 如何理解Android中的Context?

Context是一个抽象类,它允许访问应用程序特定的资源和类,以及调用应用程序级别的操作,如启动活动、广播和接收意图等。常见的Context实现包括ApplicationActivityService等。

  1. Service的onCreate是否在UI线程中执行?

。Service的onCreate方法并不在UI线程(主线程)中执行,而是在Service自己独立的线程中执行。因此,在Service中执行耗时操作时,不会阻塞UI线程。

  1. AsyncTask的工作原理及适用场景是什么?

AsyncTask是一个轻量级的异步类,用于在后台线程执行任务,并将结果发布到UI线程。它内部使用线程池来管理任务的执行,并提供简单的回调接口来处理任务的开始、进度和结束。适用于简单的后台任务,如网络请求、数据库操作等。但不适合执行长时间运行或复杂的后台任务。

  1. 对Binder机制有何理解?

Binder是Android进程间通信(IPC)的一种机制。它允许在不同进程或线程之间传递对象和方法调用。通过Binder,客户端可以跨进程调用服务端的方法,就像调用本地对象的方法一样。Binder机制基于C/S架构,服务端通过Binder驱动注册服务,客户端通过Binder驱动获取服务端的代理对象,从而进行通信。

  1. Android中进程间通信的实现方式有哪些?

Android中进程间通信(IPC)的实现方式包括:

  • Binder:如上所述,用于跨进程对象和方法调用。
  • Content Provider:允许不同应用程序之间共享数据。
  • Broadcast Receiver:用于发送和接收广播消息。
  • Intent:用于不同组件(如Activity、Service等)之间的通信。
  • AIDL(Android Interface Definition Language):用于定义跨进程接口。
  • Socket:基于网络协议的通信方式,适用于不同设备或不同应用之间的通信。
  1. 自定义View的基本创建流程是怎样的?
  • 继承View或其子类:根据需要选择合适的基类。
  • 重写构造方法:初始化View的属性。
  • 重写onDraw方法:绘制View的内容。
  • 处理事件:重写如onClick、onTouch等事件处理方法。
  • 测量和布局:重写onMeasure和onLayout方法,控制View的大小和位置。
  1. Android中的touch事件传递机制是怎样的?

在Android中,touch事件的传递遵循以下顺序:

  • Activity:首先接收到touch事件。
  • ViewGroup:如果touch事件发生在ViewGroup内部,ViewGroup会根据其子View的布局参数和触摸点的位置,决定将事件传递给哪个子View。
  • View:最终子View接收到touch事件,并处理它。

这个过程中涉及到的方法包括onInterceptTouchEvent(用于决定是否拦截事件)和onTouchEvent(用于处理事件)。

  1. Android中如何实现多线程?

Android中实现多线程的方式有多种,包括:

  • Thread类:通过继承Thread类并重写run方法来实现。
  • Runnable接口:实现Runnable接口并重写run方法,然后将Runnable对象传递给Thread的实例来执行。
  • 线程池:使用ExecutorService创建线程池,通过提交RunnableCallable任务来执行多线程操作。
  • AsyncTask:如上所述,适用于简单的后台任务。
  1. 何时在Android开发中使用多进程?多进程的好处是什么?

在Android开发中,当应用程序需要执行耗时操作或需要与其他应用程序隔离时,可以考虑使用多进程。多进程的好处包括:

  • 性能优化:将耗时操作放在单独的进程中执行,避免阻塞主线程,提高应用性能。
  • 安全性:通过将敏感操作放在单独的进程中执行,增加应用程序的安全性。
  • 资源隔离:不同进程之间的资源是相互隔离的,可以防止资源竞争和死锁等问题。

由于面试内容比较多,篇幅有限,已经被整理成了PDF指南,有需要2024年Android中高级最全面试真题答案 完整文档的可

关注公众号: Android老皮

目录

img

第一章 Java方面

  • Java基础部分
  • Java集合
  • Java多线程
  • Java虚拟机

img

第二章 Android方面

  • Android四大组件相关
  • Android异步任务和消息机制
  • Android UI绘制相关
  • Android性能调优相关
  • Android中的IPC
  • Android系统SDK相关
  • 第三方框架分析
  • 综合技术
  • 数据结构方面
  • 设计模式
  • 计算机网络方面
  • Kotlin方面

img

第三章 音视频开发高频面试题

  • 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
  • 怎么做到直播秒开优化?
  • 直方图在图像处理里面最重要的作用是什么?
  • 数字图像滤波有哪些方法?
  • 图像可以提取的特征有哪些?
  • 衡量图像重建好坏的标准有哪些?怎样计算?

img

第四章 Flutter高频面试题

  • Dart部分
  • Flutter部分

img

第五章 算法高频面试题

  • 如何高效寻找素数
  • 如何运用二分查找算法
  • 如何高效解决雨水问题
  • 如何去除有序数组的重复元素
  • 如何高效进行模幂运算
  • 如何寻找最长回文子串

img

第六章 Andrio Framework方面

  • 系统启动流程面试题解析
  • Binder面试题解析
  • Handler面试题解析
  • AMS面试题解析