每日面试题
赵雷_
业精于勤而荒于嬉,行成于思而毁于随
展开
-
Android 给定ViewGroup打印其内所有的View
如果只会说递归的方法的话,会问到JVM虚拟机方面问题。每次启动一个线程jvm会分配一个栈,调用一个方法,会封装成栈帧。进行压栈操作,当方法执行完成之后,又会执行弹栈操作。而每个栈帧中,当前调用的方法的一些局部变量、动态连接,以及返回地址等数据。Java 栈和数据结构的栈结构一样,有两个操作,压栈(入栈)、弹栈(出栈),是一个先入后出(FILO)的结构。这一块的东西,延伸出来就比较多了,你可以简单的理解为调用方法就会压栈,方法执行完会弹栈。每次方法的调用,执行压栈的操作,但是每个栈帧,都是要消耗内存.原创 2020-11-02 09:35:24 · 901 阅读 · 1 评论 -
android每日面试题9之object类中有哪些方法
这个问题是腾讯面经的一篇博客上的。/* * Copyright (C) 2014 The Android Open Source Project * Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free softwar..原创 2020-06-25 17:46:33 · 468 阅读 · 0 评论 -
android每日面试题8之volatile 关键字作用
所有线程的共享变量都存储在主内存中,每一个线程都有一个独有的工作内存,每个线程不直接操作在主内存中的变量,而是将主内存上变量的副本放进自己的工作内存中,只操作工作内存中的数据。当修改完毕后,再把修改后的结果放回到主内存中。每个线程都只操作自己工作内存中的变量,无法直接访问对方工作内存中的变量,线程间变量值的传递需要通过主内存来完成。也就是每个线程都有自己的内存空间,当它们...原创 2019-12-01 20:53:02 · 336 阅读 · 0 评论 -
android每日面试题7之Fragment 添加方式,add、replace、show 区别
add():向Activity加入一个片段,这个片段在activity容器中有他自己的视图。hide():隐藏Fragment,已经添加到父容器中的Fragment有关,隐藏Fragment的View。show():显示被隐藏的Fragment,这仅仅对已经添加到activity中的Fragment有关,显示Fragment的View。detach():Fragment的视图被销毁,但...原创 2019-11-29 22:39:57 · 768 阅读 · 0 评论 -
android每日面试题7之ArrayMap、HashMap、SparseArray 原理
我知道的:这三个map用的最多的是就是HashMap,其他的用的比较少。HashMap是无序的,key-value键值对。key可以为空。他的key是通过hash运算存到里面的。采用数组加链表的方式来存储,在下面就是红黑树。为什么采用数组加链表,因为hash冲突在一个个butlet桶下面形成链表。寻找下面的键值。一.ArrayMapint[] mHashes; // 存储...原创 2019-11-30 23:43:02 · 601 阅读 · 0 评论 -
android每日面试题6之String、StringBuilder、StringBuffer 区别
我擦,我要放弃了吗,今天才是第六道题啊。不能,现在赶紧补上。我之前知道: String,StringBuffer字符串用的还是挺多的,StringBuilder我还是用的比较少。他们之间的区别是什么,string好像都是常量用多了比较消耗内存。像大量需要拼接的字符串就用StringBuffer.StringBulider也是拼接字符串。他们俩之间的区别就是StringBuffer是线...原创 2019-11-28 21:54:46 · 242 阅读 · 2 评论 -
android每日面试题5之二维数组旋转逆时针90
input[[1,2,3],[4,5,6],[7,8,9]]output[[3,6,9],[2,5,8],[1,4,7]]两层循环,第一层每个数组的最后一个坐标倒序,第二层存放每一层的数字。下标顺序是:[0,2],[1,2],[2,2]for(int i=array[0].length();i>=0;i--){ for(int j = 0;j<array...原创 2019-11-27 21:15:30 · 325 阅读 · 0 评论 -
android每日面试题4之join()、wait()、interrupt()
join: 在一个线程中调用另一个线程的join方法,当前线程会等另一个线程执行完之后再去执行自己的逻辑。把一个线程的并行操作变成串行操作。wait:wait()方法的作用是让当前线程进入等待状态,wait()会与notify()和notifyAll()方法一起使用。notify()和notifyAll()方法的作用是唤醒等待中的线程,notify()方法:唤醒单个线程,notifyAll...原创 2019-11-27 20:29:04 · 412 阅读 · 1 评论 -
android每日面试题3之如何获取view的宽高?
这两天右眼跳,不知道要发生什么事情。白天没有看知识,看到一个这样的问题,如何获取view的宽高。之前遇到过这个问题,百度了一下就解决了。刚刚查文章才知道一点为什么才能获取到view的宽高。 记得之前要获取view的宽高,在onCreate中获取布局中TextView中宽高发现是获取不到的。都是为0,最后通过view.post方法获取到view的宽高的。textview.get...原创 2019-11-26 21:56:17 · 186 阅读 · 0 评论 -
android每日面试题2之面向对象的特征,并举例说明面向对象的过程?
好吧,这个我知道。但是我不懂的怎么用自己的语言描述这个问题。面向对象的特征无非就是 封装 继承 多态 。万物皆对象。拿起我们的面向过程对比来说。面向过程就是一件事情的开始到结束,按照顺序执行。比如吃饭,你吃饭首先要吃米饭 然后吃菜 吃米饭 吃菜 吃米饭 吃米饭 吃菜。饭吃完了刷碗。面向对象就是这个对象就是你,你会吃饭和吃菜与刷碗。到点你来吃饭你就来,完成一系列动作。不是按照...原创 2019-11-25 20:40:12 · 379 阅读 · 0 评论 -
android每日面试题1之android项目中assets目录和res目录有什么区别?
现在来的想法,今天看了一篇微信公众号,里面是各种公司的面试题。今天喵了一眼,md干了这么长时间里面大部分题都不会。丢人,每天下班看一道面试题。并写一篇博客总结吧。 assets目录与res目录有什么区别,抱歉看到这道题,会那么一点点。用的时候也知道怎么使用。 res是我们最常用的里面有图片mipmap,动画anim,布局layout,color,style。 ass...原创 2019-11-25 20:19:05 · 304 阅读 · 0 评论