当前位置: 首页 > news >正文

写给互联网大厂员工的真心话,面试必问

越来越多的人在提“移动端的下半场”、“Android 开发的焦虑”之类的,也有人在喊“技术天天在变,学也学不完”,“昨天 Kotlin 今天 Flutter”。其实我却认为,如果你技术达到了一定程度,你无需太过在意这些。

移动端真正进入下半场了吗?于我看来并没有,最多说“Android 技术的探索”进入了下半场,而整个市场还是乐观的。以前是 BAT 的天下,而近两年出来越来越多的独角兽:头条、抖音、拼多多、快手、小猿搜题等,这些公司的业务都在移动端上,他们需要招聘更多的移动端人才。如果真要说下半场,只能说很多小型创业公司在退出市场,这确实会导致很多入门工程师失业,但这也说明了这个行业在更加规范。

而且,对于 Android 工程师而言,这更是个好的时代。互联网下沉,那么下沉市场里的用户是使用 Android 多还是 iOS 多,大家都清楚。

那么,对于工程师而言需要做什么才能存活呢?很简单,要么转行,要么提高。我相信,一个技术不错的工程师,不但无需焦虑,而且在这个时代,能够拥有稳定的职业生涯和丰厚的收入。

面试官: 说一下垃圾回收机制吧

我: …可以通过强、弱引用计数结合方式解决引用计数的循环引用问题,实际上 Android 的智能指针就是这样实现的…

智能指针

智能指针在整个 Android 工程中使用很广泛,在 binder 相关源码可以看到 sp、wp 类型的引用:

 sp<IBinder> result = new BpBinder(handle);wp<IBinder> result = new BpBinder(handle);

sp 即 strong pointer 强指针引用;wp 是 weak pointer 弱指针引用。

在 Java 中我们不用关心对象的销毁及内存释放,GC 机制会自动辨别回收无用对象,而 智能指针 就是 native 层一个小型的 GC 实现。

智能指针以引用计数的方式来标识无用对象,使用智能指针的对象需继承自 RefBase,RefBase 中维护了此对象的强引用数量和弱引用数量。

强指针 sp 重载了 “=” 运算符,在引用其他对象时将强引用计数 +1,在 sp 析构函数中将强引用计数 -1,当强引用计数减至 0 时销毁引用的对象,这样就实现了对象的自动释放。

弱指针引用其他对象时将弱引用计数 +1,在 wp 析构函数中将弱引用计数 -1,当强引用计数为 0 时,不论弱引用计数是否为 0 都销毁引用的对象。

如何解决循环引用问题

只靠强引用计数方式,会存在循环引用的问题,导致对象永远无法被释放,弱引用就是专门用来解决循环引用问题的:

若 A 强引用了 B,那 B 引用 A 时就需使用弱引用,当判断是否为无用对象时仅考虑强引用计数是否为 0,不关心弱引用计数的数量

这样就解决了循环引用导致对象无法释放的问题,但这会引发野指针问题:当 B 要通过弱指针访问 A 时,A 可能已经被销毁了,那指向 A 的这个弱指针就变成野指针了。在这种情况下,就表示 A 确实已经不存在了,需要进行重新创建等其他操作

智能指针自定义规则

智能指针并不是固定的 “当强引用计数为 0 时,不论弱引用计数是否为 0 都销毁引用的对象” ,而是可以自定义规则。RefBase 提供了 extendObjectLifetime() 方法,可以用来设置引用计数器的规则,不同规则对删除目标对象的时机判断也是不一样的,包括以下三种规则:

  • OBJECT_LIFETIME_STRONG:只有在这个对象内存空间中的强计数器值为 0 的时候才会销毁对象

  • OBJECT_LIFETIME_WEAK:只有在这个对象内存空间中的强计数器和弱计数器的值都为 0 的时候才会销毁对象

  • OBJECT_LIFETIME_MASK:不管这两个计数器是不是都为 0,都不销毁对象,即与一般指针无异,还是要自己手动去释放对象

最后

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。

另外,描述问题一定要慢!不要一下子讲一大堆,慢显得你沉稳、自信,而且你还有时间反应思路接下来怎么讲更好。现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤…所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”这时我们会容易乱了阵脚。正确的发音+沉稳的描述+好听的嗓音决对是一个加分项!

最重要的是心态!心态!心态!重要事情说三遍!面试时间很短,在短时间内对方要摸清你的底子还是比较不现实的,所以,有时也是看眼缘,这还是个看脸的时代。

希望大家都能找到合适自己满意的工作!
如果需要PDF版本可以在腾讯文档中自行领取!

进阶学习视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中…(img-0i91bDGs-1622528966882)]

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

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

Python 模块导入 import ...\from... import...

代码越来越多的时候&#xff0c;我们将代码写到一个.py 文件里&#xff0c;随着代码的增加&#xff0c;代码的维护越来越困难。如果将代码按照不同的功能拆分放到不同的.py文件中&#xff0c;每个.py文件就是一个模块。 不同模块中的变量名可以相同&#xff0c;他们不会受影响…...

盘点golang中的开发神器

本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。 在Java中&#xff0c;我们用Junit做单元测试&#xff0c;用JMH做性能基准测试&#xff08;benchmark&#xff09;&#xff0c;用async-profiler剖析cpu性能&#xff0c;用jstack、jmap、arthas等来排查问题。 作…...

监控系统实践第12天:5天上手Laravel8.5之路由篇(1/5)

监控系统实践第12天&#xff1a;5天上手Laravel8.5之路由篇&#xff08;1/5&#xff09;前言安装与配置Laravel基础功能&#xff1a;路由(Route)路由是什么&#xff1f;设置路由的请求方式定义路由的路径定义路由的内容闭包中定义内容控制器中定义内容视图中定义内容其它内容的…...

前端常见跨域解决方案(全)

文章目录什么是跨域&#xff1f;什么是同源策略&#xff1f;同源策略限制以下几种行为常见跨域场景跨域解决方案一、 通过jsonp跨域二、 document.domain iframe跨域三、 location.hash iframe跨域四、 window.name iframe跨域五、 postMessage跨域六、 跨域资源共享&#x…...

因为一个字符校对问题,我的大厂面试挂了

摘要&#xff1a;字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。 本文分享自华为云社区《一个字符校对规则引发的血案》&#xff0c;原文作者&#xff1a;DRS技术快客 。 问题现场 我们先看一个建表语句 CREATE TABLE collate_test ( val1 char(32…...

SVN常用命令集合_艾孜尔江撰

在平时的工作中我们大多数情况下喜欢使用Tortoise SVN之类的可视化版本控制工具&#xff0c;但笔者发现&#xff0c;命令行的方式进行版本控制在执行速度上将会更快一些。尽管在大多数情况下使用命令行并不是很方便&#xff0c;但只要用户习惯了&#xff0c;就非常顺畅了。针对…...

什么样才能叫“技术很牛”?

近日&#xff0c;在某论坛上&#xff0c;有人提出了“一直不懂一个问题&#xff0c;什么叫‘技术很牛’&#xff1f;”的问题。详细提问称“说实话&#xff0c;我从本科到硕士&#xff0c;我觉得计算机的技术很多都是看看就会了&#xff0c;多操练下就熟了。可能有些设计问题需…...

金三银四大厂面经总结,java怎么快速创建构造方法

前言 Java作为最全面的语言&#xff0c;国内开发者也是最多的&#xff0c;Java综合起来各方面都不错&#xff0c;在大部分场景下是一种稳健的技术选择。加上近年来安卓的推动&#xff0c;目前也是最流行的一种语言。 现在Java的就业市场看起来还是挺大的&#xff0c;而且工资…...

Flink大数据实时计算系列-第一个程序JAVA版本-分组统计

Flink大数据实时计算系列-第一个程序JAVA版本-分组 在基线版本上增加了分组统计的代码 #Flink代码 package com.flinkniu.flink.operator;import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink...

Ant Design Vue实现a-table表格单元格合并

Ant Design Vue实现a-table表格单元格合并 参考Ant design Vue官网关于行和列合并api https://antdv.com/components/table-cn/ 下面官网对表格合并这块的描述 &#xff01;&#xff01;&#xff01;注意注意注意重要事情说三遍&#xff1a;很多同学都习惯性的将columns写在d…...

css中id和class的区别

css中id和class的区别ID是唯一的类不是唯一的语法区别ID是唯一的 每个元素仅可以有一个ID每个页面仅可以有一个元素拥有这个ID 类不是唯一的 你可以在多个元素中使用相同的类你可以使用多个类在一个元素中 语法区别 id对应css是用样式选择符“#”&#xff08;井号&#xff…...

力扣刷题:动态规划篇

目录322. 零钱兑换题目介绍题目实现5. 最长回文子串题目介绍题目实现518. 零钱兑换 II题目介绍题目实现53. 最大子序和题目介绍题目实现63. 不同路径 II题目介绍[62. 不同路径](https://leetcode-cn.com/problems/unique-paths/)题目实现70. 爬楼梯题目介绍题目实现72. 编辑距离…...

诚意分享:这里有份超全Java体系化进阶学习图谱

摘要 Apache Kafka是一个分布式消息发布订阅系统。它最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统( a distributed commit log)&#xff0c;之后成为Apache项目的一部分。 成千上万的企业都在使用Kafka&#xff0c;三分之一的世界500强公司也在其中&…...

栈和队列(二) : 用栈实现队列

leetcode232.用栈实现队列 https://leetcode-cn.com/problems/implement-queue-using-stacks/ 使用栈实现队列的下列操作&#xff1a; push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。…...

测试技巧:弱网测试

弱网测试场景 当前APP网络环境比较复杂&#xff0c;网络制式有2G、3G、4G网络&#xff0c;还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异&#xff0c;都会对用户使用app造成一定影响。另外&#xff0c;当前app使用场景多变&#xff0c;如进地铁、上公交、进电梯等…...

PMP哪里报名

首先了解下PMP考试时间&#xff0c;一年四次&#xff0c;正常情况是每年3、6、9、12月份考试&#xff1b; 其次了解PMP考试需要两次报名&#xff0c;分别是英文报名和中文报名&#xff1b;且两次报名通过后&#xff0c;才能正常考试。 下面分别介绍PMP英文报名和PMP考试中文报…...

Thread类的常用方法

Thread类的常用方法 void start(): 启动线程&#xff0c;并执行对象的run()方法run(): 线程在被调度时执行的操作static Thread currentThread()&#xff1a; 返回当前线程。在Thread子类中就 是this&#xff0c;通常用于主线程和Runnable实现类String getName(): 返回线程的名…...

浅谈设计模式(三)

前言 之前详细介绍了几种常用的设计模式&#xff0c;最后总结一下附上所有设计模式的类图以及六大设计原则 一、创建型 1.Factory Method&#xff08;工厂方法&#xff09; 定义&#xff1a;定义了一个创建对象的接口&#xff0c;但由子类决定要实例化的类是哪一个。工厂方法…...

AR增强现实让科技贴近生活

AR也叫增强现实&#xff0c;它是在1990年被正式提出的&#xff0c;在时间上要比VR虚拟现实技术晚一些&#xff0c;它的实现主要通过三维空间、场景交融、现实视频等技术相互作用、融合实现的。 AR增强现实技术在工业领域中&#xff0c;有着超强的适用性&#xff0c;假设某件工…...

c++程序设计中虚基类,多继承知识点

一.前言 如上 二.题目 分别声明Teacher(教师)类和Cadre(干部)类&#xff0c;采用多重继承方式由这两个类派 生出新类Teacher_Cadre(教师兼干部&#xff09;类。要求&#xff1a; &#xff08;1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。 &#xff08;2&a…...

返利网拼团小程序,10人拼团7人返利

最火项目—拼团返利商城 你是否看过这样一则视频&#xff0c;全新模式的拼团小程序、半年20亿的销售神话&#xff01;现在它来了&#xff0c;拼团返利商城完整源码&#xff0c;上传即可使用&#xff0c;➕Liyeruly&#xff0c;包安装。 玩法介绍&#xff1a; 根据商品可自由…...

为什么基类析构函数一般写成虚函数

目录 析构函数不是虚函数&#xff1a; 析构函数是虚函数&#xff1a; 由于类的多态性&#xff0c;基类指针可以指向派生类的对象&#xff0c;如果删除该基类的指针&#xff0c;就会调用该指针指向的派生类析构函数&#xff0c;而派生类的析构函数又自动调用基类的析构函数&am…...

拉伯配资6月1日策略

5月回想&#xff1a;在5月份的战略中&#xff0c;我们认为其时胶着的商场可能在5月会有所改动。从实践表现来看&#xff0c;5月下旬商场明显出现了一些活泼做多的信号&#xff0c;商场也选择了向上打破。上证指数上涨超4%&#xff0c;深圳成指上涨近3%。 行情判别&#xff1a;从…...

git 命令

git 命令 git init 作用是初始化一个能让git进行管理的仓库 使用 attrib -h .git可以释放出隐藏文件.git 创建出自己的项目文件 打开项目文件夹 然后在文件夹中打开git命令窗git add ‘文件名称’ 提交单个文件 git add . 提交所有修改的文件git status 可以查看当前git所处的…...

什么样才能叫“技术很牛”?

近日&#xff0c;在某论坛上&#xff0c;有人提出了“一直不懂一个问题&#xff0c;什么叫‘技术很牛’&#xff1f;”的问题。详细提问称“说实话&#xff0c;我从本科到硕士&#xff0c;我觉得计算机的技术很多都是看看就会了&#xff0c;多操练下就熟了。可能有些设计问题需…...

Thread类的常用方法

Thread类的常用方法 void start(): 启动线程&#xff0c;并执行对象的run()方法run(): 线程在被调度时执行的操作static Thread currentThread()&#xff1a; 返回当前线程。在Thread子类中就 是this&#xff0c;通常用于主线程和Runnable实现类String getName(): 返回线程的名…...

Linux下安装sqlite3

文章目录前言安装步骤测试安装成功前言 sqlite3的安装 安装步骤 依次执行以下命令&#xff1a; 1)wget http://www.sqlite.org/sqlite-3.5.6.tar.gz 2)tar -xzvf sqlite-3.5.6.tar.gz 3)cd sqlite-3.5.6 4)./configure 5)make 6)make install测试安装成功 出现红色方框信息…...

Labview需求(部分)

本人从事工控行业多年,有一些资源,目前labview的单子干不过来了,想找几个靠谱的labview工程师跟我合作,想做兼职,接单的labview工程师可以私聊我,另外我有一些项目还需要跟单片机工程师,plc工程师,fpga工程师合作,欢迎大家找我合作!以下是手里比较着急的项目,需要外包 需求1&am…...

EVB-6ULX TF卡硬件设计

TF卡启动Linux EVB-P6UL可选用MfgTools或Linux主机&#xff08;PC&#xff0c;x86平台&#xff09;烧录TF卡。Linux内核镜像包括u-boot、zImage、DTB和根文件系统。u-boot裸写到TF卡&#xff0c;zImage与DTB存储到u-boot之后的FAT分区&#xff0c;根文件系统存储到内核分区之后…...

机试学习笔记03 --排版问题与日期问题

1 排版类问题 1.1 字符菱形变体 右下直角三角&#xff1a;先空格&#xff0c;再字符。 #include<bits/stdc.h> using namespace std;int main() {int n;scanf("%d", &n);for(int i 1; i < n; i){for(int j 1; j < n - i; j){printf(" &quo…...

12306分流抢票软件 v1.13.21官方版 -抢票神器

软件介绍&#xff1a; 分流抢票&#xff0c;是以用户为中心、人性化的抢票软件。不做广告、不做推广、不携带病毒、不收集隐私信息&#xff0c;并接受各方技术评测&#xff0c;全心全意为用户打造一款属于自己的抢票软件&#xff01;12306分流抢票器是能够提供给用户强大的自动…...

bug探索之路:List<Map>get取出元素却是String?

一、bug初现峥嵘 有一说一我定义的List<Map>对吧&#xff0c;我get(0)取出的元素也应该是Map类型没问题吧。不行&#xff0c;编译器告诉我&#xff0c;java.lang.String cannot be cast to java.util.Map。 这个意思就是说&#xff0c;你这个就是String类型&#xff0c;…...

python制作自动抢票_python自动抢票

# -*- coding: utf-8 -*-from splinter.browser import Browserfrom time import sleepimport traceback#初始化信息# 用户名&#xff0c;密码username u"用户名"passwd u"密码"# cookies值得自己去找starts u"杭州,HZH"ends u"黄石,HS…...

python 实现12306自动抢票

春节临近越来越多的人需要买火车票了&#xff0c;然而网上那些或分享抢票链接或加钱抢票的软件并不能确定帮自己买到票&#xff0c;既然如此为什么不能自己实现抢票呢&#xff1f;所以在借鉴网上大神的成果基础上&#xff0c;自己也实现了python实时抢票的功能&#xff0c;并且…...

python自动抢票的原理_Python突破12306最后一道防线,实现自动抢票(附源码)

一年一度的春运又来了&#xff0c;今年我自己写了个抢票脚本。使用PythonSplinter自动刷新抢票&#xff0c;可以成功抢到。(依赖自己的网络环境太厉害&#xff0c;还有机器的好坏)Splinter是一个使用Python开发的开源Web应用测试工具&#xff0c;它可以帮你实现自动浏览站点和与…...

12306半自动抢票

当其它抢票软件不起作用的时候&#xff0c;是另一个保障 from selenium import webdriver from selenium.common.exceptions import NoSuchElementException, ElementNotVisibleException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui im…...

python+selenium 12306自动抢票

写在前面 又到了一年一度的春运&#xff0c;又要开始抢票了&#xff0c;因为并不是很相信XC、FZ等预约抢票&#xff0c;就想着自己写个脚本&#xff0c;但其实网上已经有很多人写了抢票程序&#xff0c;我为什么还要重写呢&#xff0c;因为12306的网页源代码是有变化的&#x…...

python实现云服务器上12306自动化抢票功能

本文将分为几大模块讲解python服务器上12306自动化抢票功能&#xff1a; 一、云服务器的安装与配置 1.1 云服务器与个人主机不同&#xff0c;不受时间、场所等条件的限制&#xff0c;将python代码运行在云服务器上可以实现真正意义上的解放。 1.2 这里&#xff0c;我选择阿里…...

关于12306网站抢票的架构设计

12306 抢票,极限并发带来的思考 虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。 尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。 “12306 服务”承受着这个世界上任何秒杀系…...

12306自动抢票软件代码实现

昨天我发的是抓取的12306数据包&#xff0c;然后分析了一下&#xff0c;今天按照昨天的分析 用代码实现了&#xff0c;如果有需要的同学们可以看一下 &#xff0c;实现的功能有&#xff0c;登录&#xff0c;验证码识别&#xff0c;自动查票&#xff0c;有余票点击预定&#xf…...

12306自动抢票软件

一、说明 12306目前反爬虫手段做的越来越牛逼了&#xff0c;一旦检测到&#xff0c;直接就封号了或者很容易导致登录失败&#xff0c;必须更换代理服务器才能登录&#xff0c;所以做测试的时候一定要小心&#xff0c;要先把代理IP池搞好&#xff0c;再做测试。 二、代理IP池 …...

防疫流调溯源0.03先批量读取exel中的内容

# #地址.csv 中仅有一列 地址名称 # # #import json import pandas as pd import timeif __name__ "__main__":t0 time.time()bus_name []path_str path {}# 读取当前目录下的公交线路.txt文档&#xff0c;获取公交线路名with open("地址.csv", &qu…...

利用python来制作动态二维码

前言 为什么要学习python&#xff1f;是因为不仅很多工作需要用到python&#xff0c;同时我们可以利用python做很多好玩儿的事儿。 今天就来教大家如何利用python制作动态二维码。 代码说明&#xff1a;我们以小猪佩奇gif图片为例&#xff0c;如果我们利用的背景图是gif动态…...

python制作个性二维码

通过MyQR库制作二维码 生成动态二维码 from MyQR import myqr import osos.chdir(C:\\Users\\lmy\\Pictures\\Saved Pictures) #切换到图片所在的目录myqr.run(wordshttps://blog.csdn.net/weixin_44803791,version1, #控制边长&#xff0c;1-40取值levelH, #纠错级别&…...

Python制作动态二维码

1.环境&#xff1a; windows10Python3.8 2.需要安装的库&#xff1a;myqr 安装&#xff1a; pip3 install myqr 3.使用myqr制作动态二维码 from MyQR import myqr ver,level,qr_name myqr.run(words"此处输入文字或相应连接",picture"此处输入gif格式文件名…...

npm:发布/迭代个人开发包到世界仓库

目录 package包:发布/更新流程 注意点: 1.报错:初次执行npm publish命令报错...

利用python制作动态二维码

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者&#xff1a;嗨学编程 PS&#xff1a;如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料以及群交流解答点击…...

python制作自己的专属二维码

python制作自己的专属二维码普通二维码带图二维码动图二维码首先下载并导入&#xff0c;下载可以 pip insatll MyQR来下载from MyQR import myqr首先可以看到这个函数的几个参数 words &#xff1a;二维码的内容&#xff0c;链接或者句子。 version&#xff1a;二维码的大小&…...

利用Python制作属于自己的炫酷二维码

前几天我答应过大家&#xff0c;要写篇文章教你们如何利用Pycharm工具编写属于自己的二维码。今天&#xff0c;它终于来了&#xff01;&#xff01;&#xff01; 话不多说&#xff0c;直接进入正题↓ 1. 导入&#xff08;下载&#xff09;MyQR库 使用windowsr键&#xff0c;输…...

js-制作二维码

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <meta name"viewport" content"initial-scale1.0, maximum-scale1.0, user-scalableno" /> <meta name"format-dete...