精华内容
下载资源
问答
  • webpack常见提问

    千次阅读 多人点赞 2020-09-27 10:00:19
    合理缓存 hash 每打包一次都改变 contentHash 内容改变就改变 chunkHash 当入口chunk方式改变就改变 treeShake 不需要的组件自动删除 按需加载 - @babel/plugin-transform-runtime//按需加载 5 webpack plugin与...

    1 不用vue的脚手架可以搭建项目吗?

    -可以

    • css,HTML的处理正常流程
    • 用到es6 采用babel
    • vue-loder 加载vue文件
    • vue-template-compiler 编译模板文件
    • vue-style-loader 加载vue样式
    • babel 配置运行环境与插件“presets”:["@babel/preset-env"]

    2 使用webpack如何实现测试环境与生产环境的配置

    • package.json的script属性传递参数,运行不同的命令传递不同的参数
    • cross-evn 插件传递参数,
    • 前后端都可以通过process-env.NODE_ENV在配置文件和项目中获取
    • 通过参数加载不同的配置文件,在webpack中。
    • 项目中通过参数的配置不同请求域名,环境
    • cross-env NODE_ENV=production webpack

    3 webpack如何实现 跨域

    • 开发环境的跨域
    • 通过配置DevServe的proxy实现代理跨域

    4 webpack如何实现优化(前端优化手段)

    • 压缩

      1. 压缩html:html(html-webpack-plugin)
      2. 压缩和优化css
      3. 压缩js
    • 懒加载,延迟加载

      1. import(xxx).then()
      2. 魔法注释 prefetch 实现预加载
    • 分包

      1. 通过import().then导入的自动分包
      2. 通过import导入node_modules的自动分包chunks:"all”
    • 减少HTTP请求

      1. url-loader()
    • 合理缓存

      1. hash 每打包一次都改变
      2. contentHash 内容改变就改变
      3. chunkHash 当入口chunk方式改变就改变
    • treeShake

      • 不需要的组件自动删除
    • 按需加载
      - @babel/plugin-transform-runtime//按需加载

    5 webpack plugin与loader的区别

    • loader:让webpack拥有加载和处理非js文件的能力
    • plugin:在wepack运行过程中(生命周期)额外处理其他内容的能

    6 webpack如何加载less/sass

    • less去编译less文件
    • less-loader加载less文件
    • css-loader加载编译好的css
    • 放在header或者单独文件里面,放在header或者单独文件里面

    7 webpack /vue 如何实现懒加载图片 - 懒加载,延迟加载

      1. import(xxx).then()
      2. 魔法注释 prefetch 实现预加载
    

    8 webpack如何实现多入口打包在这里插入图片描述

    9 为什么使用babel

    • 让ES6 ES7的js文件转换为ES5浏览器能被识别的js文件
    展开全文
  • CMMI常见提问(三)

    2009-02-10 14:48:00
    Answer:同行评审的开展方式是多种多样的,可以开会进行,也可以不开会地进行,关键是要对评审问题进行正确反馈、记录、跟踪处理。不采用开会的同行评审的开展方式如:1、拥有者和协调员 确认好参与评审的评审人,...

    Question:同行评审,是否一定要开会? Answer:同行评审的开展方式是多种多样的,可以开会进行,也可以不开会地进行,关键是要对评审问题进行正确反馈、记录、跟踪处理。不采用开会的同行评审的开展方式如: 1、拥有者和协调员 确认好参与评审的评审人,评审的开始和结束时间后; 2、准备好评审包(包含:被《评审对象》、《同行评审记录表》、《被评审对象对应的检查单》) 3、拥有者或协调员 通过邮件发出评审通知,通知评审人进行评审; 4、评审人在《同行评审记录表》记录评审意见,通过邮件反馈,或直接通过cvs刷新在对应目录下; 5、拥有者确认问题、对问题分类、修改问题。协调员根据评审者的反馈决定是否开会讨论反馈的问题和解决方案。 6、拥有者根据《同行评审记录表》修改问题;协调员将修订后的《同行评审记录表》作为评审报告发放给评审者确认。 7、协调员验证、关闭。 如果评审意见记录在邮件中正文中,也要求搬挪到《同行评审记录表》保存跟踪修改。

     

    Question: 如何高效的召开同行评审记录会议?

    Answer:高效的同行评审记录会议有以下几点原则:

     

    协调者确认所有审查者已准备好;

    限定讨论,直到确保拥有者理解问题为止.

    焦点在问题上,不在解决方案上.

    发言简明并且有建设性,不要忽视任何人所说的.

    每个参加者为会议的成功负责.

     

    Question:参加同行评审的评审者是不是来找茬的?

     

     

    Answer:不是。

     

    * 参加同行评审的评审者是来帮助评审对象的拥有者发现问题的;

     

    * 协助拥有者解决问题,尽早的消除评审对象中的缺陷;

     

    * 同行评审发现的问题数不作为拥有者的绩效考核的指标;

     

    * 拥有者应该欢迎公司各方面的同行多提宝贵意见。

     

    评审者的职责:尽可能的发现WPUR(需要评审的各种工作产品)中存在的缺陷 ,查检者将着重承担发现WPUR的某一类型的缺陷。

     

    Question:同行评审的协调者的职责是什么?都做些什么?

    Answer:协调者的工作如下:

    1、协调者确认评审计划:即确认哪些人参加评审,评审者的分工,什么时候评审专家完成评审意见的提交、拥有者完成修改、验证的进度计划;

    2、协调者检查评审包:检查 拥有者 准备的评审包是完整的、经过自检可进入评审的;

    3、协调者启动评审:启动评审可采用邮件或简短会议的方式;

    4、协调者参与评审,跟踪 评审者 问题反馈的进展;确保评审者用《同行评审记录表》及时、有效反馈意见;

    5、协调者必要时组织问题交流会议(记录会议),或组织解决措施讨论确认会议(第三小时会议)

    6、协调者确认 评审者 意见的接纳,问题的解决措施;决策争议性问题。

    7、协调者验证 拥有者 对条款处理正确,WPUR符合《检查单》的要求。

    8、协调者统计评审数据,确认评审关闭。

     

    Question:同行评审,拥有者 的职责是什么?都做些什么?

    Answer:拥有者需要做的工作是:

    1、准备同行评审的工作产品WPUR,自检,确保WPUR没有低级错误,已经做好被评审的准备;

    2、向 协调者 建议评审者、和评审者分工;

    3、准备 评审包,提交给协调者发放给评审专家评审;

    4、必要时,作为介绍者(阅读者)介绍被评审对象 WPUR;

    5、根据《同行评审记录表》的评审意见、评审者和协调者的修改和解决措施意见,返工被评审的WPUR;

    6、改变问题状态,记录返工数据;针对疑难问题,提交 协调者 决策;

    7、针对关闭评审之前无法解决的需要跟踪的问题,转移到《问题跟踪表》跟踪。

     

    Question:同行评审中,评审者的职责是什么?他们都干些啥?

    Answer:评审者的职责如下:

    1、根据协调者安排,参加同行评审,;

    2、关注评审视角,根据WPUR的《检查单》提示的要点评审;

    3、在《同行评审记录表》记录发现的问题、建议,问题严重程度和评审花费的工作量;

    4、必要时,参加《记录会议》阐述发现的问题,或《第三小时会议》明确解决的措施;

    5、必要时,作为解说者(阅读人)解说/阅读被评审对象,或作为记录者记录问题或会议纪要,

     

     

    展开全文
  • 计算机考研面试常见英语提问及专业课

    千次阅读 多人点赞 2020-05-01 10:44:04
    我认为一下几点: 第一,我的本科专业就是计算机科学与技术,已经学习了4年计算机培养出浓厚的兴趣,我希望可以继续以学生的身份在学术和科研方面取得一些成就。 第二,我的梦想就是成为一名研究生,尽管去年一战...

    一、中英文面试

    1.为什么考研究生呢?why do you take the postguaduate entrance exanmination?

    我认为有一下几点:
    第一,我的本科专业就是计算机科学与技术,已经学习了4年计算机培养出浓厚的兴趣,我希望可以继续以学生的身份在学术和科研方面取得一些成就。
    第二,我的梦想就是成为一名研究生,尽管去年一战失败,但我并没有放弃对研究生的追求,即便是今年竞争如此激烈,我依然坚持自己的梦想。

    以上就是我的全部回答。

    I think there are several aspects:
    Firstly,my major is computer science and technology.I have studied computer for4 years and developed a strong interest.I hope I can continue to make some progress in the academic and research fields.
    Secondly,my dream is to be a postgraduate.Even I failed the exam last year,I still have not give up the pursuit of postgraduate.Even in todays fierce competition,I still insist on my dream.
    That is all my answer.

    2.你研究书阶段的计划是什么呢?
    what are your plans for postgraduate school?

    有以下几点:
    第一,我会在老师的指导下选择一个确定的方法和研究方向。
    第二,我会阅读大量的中英文文献着重提高自己理解,分析,评价论文的能力以及提高自己论文写作的能力。
    第三,我会珍惜每一次实践的机会并参与导师项目和课题的研究。
    第四,我会不断提高自己英语水平。

    There are several aspects:
    Firstly,under the guidance of the teachers,I will choose certain method and research direction.
    Secondly,I will read a lot of Chinese and English literature and focused on enhancing the abilities of understanding,anlysis,evaluation.
    Thirdly,I will cherish every practical opportunity and participate in the research of teachers projeccts and subjects.
    Finally,I will continue to strengthen my english level.
    That is all my answer.

    3.你爸爸妈妈是做什么的呢?

    这个问题我给大家提供一个方向,每个同学要根据自己的家庭情况说明一下,可以适当做些修改以大东老师(比如:如果你是计算机专业,可以说自己爸爸也是干技术的,只不过是修电视的。如果是土木的,可以说自己爸爸是一名木匠或者建筑工人等,使用这些与自己专业相近的,以便更好打动老师),但切记不要完全没有任何根据,只能是在自己现实情况的基础上稍作修改,这样才会说服你自己,也就能说服老师,试问如果你毫无根据的乱编造,你自己会相信吗?如果你自己都不相信,老师会相信吗?

    4.你有女朋友吗? Do you have girl friend?
    说明:对于这个问题,我自己的看法是没有,即便有也说没有。因为男生嘛!还是得以学业为重,尤其是研究生面试的时候,在老师面前应该尽量表现的你很是一个有上进心,有理想,好学的孩子。

    我的回答是:目前还没有谈女朋友,因为我觉得男孩子还是得先立业后成家,这是我一直以来的信念,我觉得男孩子还是得在年轻的时候多学点本事,充实自己,将来才能够让自己身边的人过的踏实。

    I do not have girl friend,In my opinion,as a man,I think I should learn more knowledge and enrich myself so that my family lives a more stable life.

    5.你为什么选择我们学校呢?
    可以从以下几点出发:
    我认为有一下几点:
    第一,XXX城市是一座发展很有潜力的城市,它的风景和气候很怡人,我将来想就在这里发展。
    第二,XXX学校的的该专业在全国排名前X,拥有全国一流的师资力量。

    I think there are several aspects:
    Firstly,XXX is a great potential city,Its weather and environment are very nice.I look forward to developing in the city in the future.
    Secondly,XXranks …in the country and has first-class faculty.

    二、专业

    1.对什么方向感兴趣?为什么对它感兴趣?
    数据挖掘:数据挖掘是指从大量的数据中通过算法挖掘隐藏其中的信息的过程,它包括机器学习、统计学、模式识别的技术。

    大数据:简单说,大数据就是从各种各样的数据中,如:视频、音频、图片、日志等文件中快速获得有价值信息的能力,大数据最核心的价值就在于对海量的数据进行存储和分析。
    特点:最少也要是TB级别的、数据类型多、价值密度很低(如:视频为例,连续不断监控,有用的信息可能只有几秒钟)、处理速度快。

    (1)大数据研究受到国家高度重视,人才培养方面正在加速,全国各地对大数据发展积极性很高。
    (2)目前国家对大数据这方面的人才需求量很大,正因为这个原因,这方面的技术还需要更多的人才来推动它的发展。
    (3)在以后,我们可能会更多的借助于数据来说明一些事情,所以大数据未来就业前景应该很不错。

    三、操作系统

    1.什么是物理内存?什么是虚拟内存?两者的关系?
    物理内存(内存条):当打开程序时,系统会将程序自动加载到物理内存上。
    虚拟内存(硬盘):虚拟内存是代替物理内存行使存储的功能,但无法代替物理内存行使加载程序的功能。
    关系:当运行的程序过多,物理内存不够时,系统会将一部分硬盘空间当内存条使用,这就变成了虚拟内存。

    2.分页与分段的区别?
    页是信息的物理单位,分页是为了实现离散分配方式,以消减内存的外零头,提高内存的利用率,分页仅仅是系统的需要。
    段是信息的逻辑单位,分段是为了更好的满足用户的需要。
    页的大小固定,分为页号+页内地址。段的长度可变,取决于用户编写的程序。
    分页的作业地址是一维的,分段的地址是作业地址是二维的。

    3.cache的作用是什么?
    cache(高速缓冲存储器)位于CPU和主存之间的,它的容量小,但是速度很快,解决CPU与主存之间速度不匹配的问题。

    4.硬中断与软中断的区别?
    硬中断:硬中断是由硬件产生的,可以直接中断CPU
    软中断:软中断是由当前正在运行的进程产生的,不能中断CPU,软中断是需要内核为正在运行的进程去做一些I/O请求。

    5.进程与线程的关系。
    进程:进程是一个能独立运行的基本单位,也是系统分配资源的基本方式,进程拥有独立的地址空间,当一个进程崩溃后不会对其他进程产生影响。

    线程:线程是进程的一个实体,是CPU调度和分配的方式,它是比进程更小的能独立运行的基本单位,线程自己基本不拥有资源,它与同属一个进程中的其他线程共享进程中的所有资源,线程之间没有独立的地址空间,因此一个线程死掉后整个进程也就死掉了。

    6.死锁处理策略
    预防死锁、避免死锁、检测死锁、接触死锁

    四、计算机网络

    1.说明OSI体系结构。
    物理层:频分复用,时分复用,码分复用。
    数据链路层:PPP协议,CSMA/CD协议
    网络层:IP,CIDR,RIP,OSPF,BGP,ICMP,VPN,NAT
    传输层:TCP,UDP,拥塞控制,三次握手
    应用层:DNS,DHCP

    2.解释ARP协议。(IP -> MAC)
    ARP协议是用来解释IP地址所对应的MAC地址,因为在实际的数据链路上传送数据帧时,必须要使用硬件地址。

    3.解释DHCP协议。
    DHCP协议主要是为新加入到计算机网络中的计算机自动配置IP地址。这样一台主机就可以即插即用不需要人工配置IP地址。

    4.解释TCP为什么需要三次握手。
    在这里插入图片描述正常的三次握手:
    第一次:客服端(C)向服务器端(S)发送连接请求报文,此时客服端(C)进入已发送状态。
    第二次:服务器端(S)收到客服端(S)发送的连接请求报文,同意建立连接,发送确认报文,此时服务器进入收到状态。
    第三次:客户端收到服务器端发送的确认报文后,会向服务器发送确认报文,告诉服务器我收到了你的确认报文并准备连接,服务器端收到确认报文后,此时服务器端进入到已连接状态。

    如果是两次握手的话,当第一次客户端向服务器发送请求连接报文后,由于网络堵塞等原因,客户端等待的时间过长,取消请求连接,但是此时服务器端收到客服端发送的连接请求了,同意建立连接,向客服端发送确认报文,但由于客服端已经取消建立连接,所以导致服务器迟迟等不到客户端发送的确认报文,以至于服务器端一直在等待,这样就会长时间占用服务器的资源。

    5.解释TCP的四次挥手

    在这里插入图片描述第一次挥手:客户端向服务器端放松FIN报文,这表示客户端没有数据要发送给服务器端了。
    第二次挥手:服务器端收到客户端发送的FIN报文,向客户端回发ACK报文,这表示我同意你的关闭请求。
    (注意:在第二次挥手完毕后,服务器端还可以继续向客户端发送数据,这里只是表示我同意你的关闭请求。)
    第三次挥手:服务器端向客户端发送FIN报文,请求关闭连接。这里表示我这边也要关闭请求了,这时服务器端不能再向客户端发送数据。
    第四次挥手:客户端收到服务器端的FIN报文后,回发一个ACK报文,服务器端收到客户端的ACK报文后,就关闭连接。而客户端等待2MSL后没收到回复,这就证明服务器端已经关闭了,这时服务器端也可以关闭了。

    6.解释拥塞控制和解决方法。
    当一个网络对资源的需求量超过了资源所能提供的时候,就会导致网络吞吐量大幅下降的情况,拥塞控制就是为了防止过多的数据注入到网络中导致路由器和链路不至于过载。

    7.电路交换、报文交换、分组交换。
    电路交换要求建立一条专用线路,报文交换和分组交换不需要建立专用线路,采用存储转发的方式,区别在于数据报的粒度大小。

    8.TCP/UDP的区别
    TCP与UDP都是传输层协议,但是TCP面对连接(如:打电话之间进行拨号建立连接)提供可靠的数据传输服务,而UDP面对非连接不提供可能的数据传输服务。TCP面向字节流数据,传输慢。UDP面向报文数据,传输快。

    9.CSMA/CD(带冲突检测的多路载波监听技术)
    各工作站在发送数据之前会先监听信道是否空闲,若空闲,则立即发送数据,若忙碌,则等待一段时间至信道空闲再发送数据,若上一段信息发送结束后,同时有多个站点请求发送数据,则判定为冲突,则所有节点停止发送数据,待一段随机时间后,再重新尝试发送。

    六、数据库原理

    1、数据库的发展阶段?
    人工管理阶段>>文件系统阶段>>数据库系统阶段

    2、什么是数据库系统?
    在计算机系统中引入数据库后的系统。它是由数据库、数据库用户、计算机软硬件、数据库管理员。

    3、什么是数据库?
    数据库是长期存在计算机内、有组织的、可共享数据集合。

    4、什么是数据库系统的三级模式?
    模式(逻辑模式或概念模式)、外模式(子模式或用户模式)、内模式(存储模式或物理模式)

    5、什么是数据库系统的二级映像与数据独立性?
    外模式/模式(逻辑独立性)、模式/内模式(物理独立性)

    6、什么是数据库管理系统?
    用于用户与操作系统之间的一层数据管理软件

    7、什么是数据库管理系统的功能?
    数据定义功能(DDL)、数据操纵功能(DML)、数据查询功能、数据控制功能

    8、什么是数据模型的组成要素?
    数据结构、数据操作、数据的完整性约束

    9、什么是四种数据模型?
    层次模型、网状模型、关系模型、面向对象模型

    10、什么是数据库的约束?
    NULL/NOT NULL约束、UNIQUE约束、PRIMARY KEY约束、FOREIGN KEY约束、CHECK约束

    11、添加索引目的?
    提高数据查询的效率

    12、什么是聚集索引或非聚集索引?
    物理存储顺序与逻辑顺序相同
    物理存储顺序与索引顺序不一致

    13、索引的类型?
    聚集索引、非聚集索引、唯一索引、视图索引、全文索引、XML索引

    14、什么是第一范式、第二范式、第三范式?
    关系模式R中每个属性都不可再分
    关系模式R属于第一范式、且所有非主属性与主码之间是完全函数依赖
    关系模式R属于第二范式,且所以非主属性与主码之间不存在传递函数依赖的关系

    展开全文
  • Android开发面试经——5.常见面试官提问Android题① - 移动互联的寻梦之旅 - 博客频道 - CSDN.NET 来源网址: http://blog.csdn.net/finddreams/article/details/44514011 ...

     

    Android开发面试经——5.常见面试官提问Android题① - 移动互联的寻梦之旅 - 博客频道 - CSDN.NET

    来源网址: http://blog.csdn.net/finddreams/article/details/44514011

     

    关注finddreams博客: http://blog.csdn.net/finddreams/article/details/44513579

    一般的面试流程是笔试完就接着是面试了,面试时技术经理会问你一些你工作中遇到的Android方面的问题,谈谈你所做的项目,和在项目中所扮演的角色。今天我就给大家整理一些,面试中常见的面试官提的一些问题?

    1.要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的?

    ①Item布局,层级越少越好,使用hierarchyview工具查看优化。 ②复用convertView ③使用ViewHolder ④item中有图片时,异步加载 ⑤快速滑动时,不加载图片 ⑥item中有图片时,应对图片进行适当压缩 ⑦实现数据的分页加载

    2.对于Android 的安全问题,你知道多少

    ①错误导出组件 ② 参数校验不严 ③WebView引入各种安全问题,webview中的js注入 ④不混淆、不防二次打包 ⑤明文存储关键信息 ⑦ 错误使用HTTPS ⑧山寨加密方法 ⑨滥用权限、内存泄露、使用debug签名

    3. 如何缩减APK包大小?

    代码 保持良好的编程习惯,不要重复或者不用的代码,谨慎添加libs,移除使用不到的libs。 使用proguard混淆代码,它会对不用的代码做优化,并且混淆后也能够减少安装包的大小。 native code的部分,大多数情况下只需要支持armabi与x86的架构即可。如果非必须,可以考虑拿掉x86的部分。 资源 使用Lint工具查找没有使用到的资源。去除不使用的图片,String,XML等等。 assets目录下的资源请确保没有用不上的文件。 生成APK的时候,aapt工具本身会对png做优化,但是在此之前还可以使用其他工具如tinypng对图片进行进一步的压缩预处理。 jpeg还是png,根据需要做选择,在某些时候jpeg可以减少图片的体积。 对于9.png的图片,可拉伸区域尽量切小,另外可以通过使用9.png拉伸达到大图效果的时候尽量不要使用整张大图。 策略 有选择性的提供hdpi,xhdpi,xxhdpi的图片资源。建议优先提供xhdpi的图片,对于mdpi,ldpi与xxxhdpi根据需要提供有差异的部分即可。 尽可能的重用已有的图片资源。例如对称的图片,只需要提供一张,另外一张图片可以通过代码旋转的方式实现。 能用代码绘制实现的功能,尽量不要使用大量的图片。例如减少使用多张图片组成animate-list的AnimationDrawable,这种方式提供了多张图片很占空间。

    4.Android与服务器交互的方式中的对称加密和非对称加密是什么?

    对称加密,就是加密和解密数据都是使用同一个key,这方面的算法有DES。 非对称加密,加密和解密是使用不同的key。发送数据之前要先和服务端约定生成公钥和私钥,使用公钥加密的数据可以用私钥解密,反之。这方面的算法有RSA。ssh 和 ssl都是典型的非对称加密。

    5.设备横竖屏切换的时候,接下来会发生什么?

    1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2、设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次 3、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

    6.Android启动Service的两种方式是什么? 它们的适用情况是什么?

    如果后台服务开始后基本可以独立运行的话,可以用startService。音乐播放器就可以这样用。它们会一直运行直到你调用 stopSelf或者stopService。你可以通过发送Intent或者接收Intent来与正在运行的后台服务通信,但大部分时间,你只是启动服务并让它独立运行。如果你需要与后台服务通过一个持续的连接来比较频繁地通信,建议使用bind()。比如你需要定位服务不停地把更新后的地理位置传给UI。Binder比Intent开发起来复杂一些,但如果真的需要,你也只能使用它。 startService:生命周期与调用者不同。启动后若调用者未调用stopService而直接退出,Service仍会运行 bindService:生命周期与调用者绑定,调用者一旦退出,Service就会调用unBind->onDestroy

    7.谈谈你对Android中Context的理解?

    Context:包含上下文信息(外部值) 的一个参数. Android 中的 Context 分三种,Application Context ,Activity Context ,Service Context. 它描述的是一个应用程序环境的信息,通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent信息等

    8.Service的onCreate回调在UI线程中吗?

    Service生命周期的各个回调和其他的应用组件一样,是跑在主线程中,会影响到你的UI操作或者阻塞主线程中的其他事情

    9.请介绍下AsyncTask的内部实现,适用的场景是?

    AsyncTask内部也是Handler机制来完成的,只不过Android提供了执行框架来提供线程池来执行相应地任务,因为线程池的大小问题,所以AsyncTask只应该用来执行耗时时间较短的任务,比如HTTP请求,大规模的下载和数据库的更改不适用于AsyncTask,因为会导致线程池堵塞,没有线程来执行其他的任务,导致的情形是会发生AsyncTask根本执行不了的问题。

    10.谈谈你对binder机制的理解?

    binder是一种IPC机制,进程间通讯的一种工具. Java层可以利用aidl工具来实现相应的接口.

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

    Intent,Binder(AIDL),Messenger,BroadcastReceiver

    12.介绍下实现一个自定义view的基本流程

    1、自定义View的属性 编写attr.xml文件 2、在layout布局文件中引用,同时引用命名空间 3、在View的构造方法中获得我们自定义的属性 ,在自定义控件中进行读取(构造方法拿到attr.xml文件值) 4、重写onMesure 5、重写onDraw

    13.Android中touch事件的传递机制是怎样的?

    1.Touch事件传递的相关API有dispatchTouchEvent、onTouchEvent、onInterceptTouchEvent 2.Touch事件相关的类有View、ViewGroup、Activity 3.Touch事件会被封装成MotionEvent对象,该对象封装了手势按下、移动、松开等动作 4.Touch事件通常从Activity#dispatchTouchEvent发出,只要没有被消费,会一直往下传递,到最底层的View。 5.如果Touch事件传递到的每个View都不消费事件,那么Touch事件会反向向上传递,最终交由Activity#onTouchEvent处理. 6.onInterceptTouchEvent为ViewGroup特有,可以拦截事件. 7.Down事件到来时,如果一个View没有消费该事件,那么后续的MOVE/UP事件都不会再给它

    14.Android多线程的实现方式有哪些?

    Thread & AsyncTask Thread 可以与Loop 和 Handler 共用建立消息处理队列 AsyncTask 可以作为线程池并行处理多任务

    15.Android开发中何时使用多进程?使用多进程的好处是什么?

    要想知道如何使用多进程,先要知道Android里的多进程概念。一般情况下,一个应用程序就是一个进程,这个进程名称就是应用程序包名。我们知道进程是系统分配资源和调度的基本单位,所以每个进程都有自己独立的资源和内存空间,别的进程是不能任意访问其他进程的内存和资源的。 那如何让自己的应用拥有多个进程? 很简单,我们的四大组件在AndroidManifest文件中注册的时候,有个属性是android:process,1.这里可以指定组件的所处的进程。默认就是应用的主进程。指定为别的进程之后,系统在启动这个组件的时候,就先创建(如果还没创建的话)这个进程,然后再创建该组件。你可以重载Application类的onCreate方法,打印出它的进程名称,就可以清楚的看见了。再设置android:process属性时候,有个地方需要注意:如果是android:process=”:deamon”,以:开头的名字,则表示这是一个应用程序的私有进程,否则它是一个全局进程。私有进程的进程名称是会在冒号前自动加上包名,而全局进程则不会。一般我们都是有私有进程,很少使用全局进程。他们的具体区别不知道有没有谁能补充一下。

    2.使用多进程显而易见的好处就是分担主进程的内存压力。我们的应用越做越大,内存越来越多,将一些独立的组件放到不同的进程,它就不占用主进程的内存空间了。当然还有其他好处,有心人会发现Android后台进程里有很多应用是多个进程的,因为它们要常驻后台,特别是即时通讯或者社交应用,不过现在多进程已经被用烂了。典型用法是在启动一个不可见的轻量级私有进程,在后台收发消息,或者做一些耗时的事情,或者开机启动这个进程,然后做监听等。还有就是防止主进程被杀守护进程,守护进程和主进程之间相互监视,有一方被杀就重新启动它。应该还有还有其他好处,这里就不多说了。

    3.坏处的话,多占用了系统的空间,大家都这么用的话系统内存很容易占满而导致卡顿。消耗用户的电量。应用程序架构会变复杂,应为要处理多进程之间的通信。这里又是另外一个问题了。

    16.ANR是什么?怎样避免和解决ANR?

    ANR:Application Not Responding,即应用无响应 ANR一般有三种类型: 1:KeyDispatchTimeout(5 seconds) –主要类型 按键或触摸事件在特定时间内无响应

    2:BroadcastTimeout(10 seconds)

    BroadcastReceiver在特定时间内无法处理完成

    3:ServiceTimeout(20 seconds) –小概率类型

    Service在特定的时间内无法处理完成

    超时的原因一般有两种:

    (1)当前的事件没有机会得到处理(UI线程正在处理前一个事件没有及时完成或者looper被某种原因阻塞住) (2)当前的事件正在处理,但没有及时完成

    UI线程尽量只做跟UI相关的工作,耗时的工作(数据库操作,I/O,连接网络或者其他可能阻碍UI线程的操作)放入单独的线程处理,尽量用Handler来处理UI thread和thread之间的交互。

    UI线程主要包括如下:

    Activity:onCreate(), onResume(), onDestroy(), onKeyDown(), onClick() AsyncTask: onPreExecute(), onProgressUpdate(), onPostExecute(), onCancel() Mainthread handler: handleMessage(), post(runnable r) other

    17.Android下解决滑动冲突的常见思路是什么?

    相关的滑动组件 重写onInterceptTouchEvent,然后判断根据xy值,来决定是否要拦截当前操作

    18.如何把一个应用设置为系统应用?

    成为系统应用,首先要在 对应设备的 Android 源码 SDK 下编译,编译好之后: 此 Android 设备是 Debug 版本,并且已经 root,直接将此 apk 用 adb 工具 push 到 system/app 或 system/priv-app 下即可。 如果非 root 设备,需要编译后重新烧写设备镜像即可。

    有些权限(如 WRITE_SECURE_SETTINGS ),是不开放给第三方应用的,只能在对应设备源码中编译然后作为系统 app 使用。

    19、Android内存泄露研究

    Android内存泄漏指的是进程中某些对象(垃圾对象)已经没有使用价值了,但是它们却可以直接或间接地引用到gc roots导致无法被GC回收。无用的对象占据着内存空间,使得实际可使用内存变小,形象地说法就是内存泄漏了。 场景 类的静态变量持有大数据对象 静态变量长期维持到大数据对象的引用,阻止垃圾回收。 非静态内部类的静态实例 非静态内部类会维持一个到外部类实例的引用,如果非静态内部类的实例是静态的,就会间接长期维持着外部类的引用,阻止被回收掉。 资源对象未关闭 资源性对象如Cursor、File、Socket,应该在使用后及时关闭。未在finally中关闭,会导致异常情况下资源对象未被释放的隐患。 注册对象未反注册 未反注册会导致观察者列表里维持着对象的引用,阻止垃圾回收。 Handler临时性内存泄露 Handler通过发送Message与主线程交互,Message发出之后是存储在MessageQueue中的,有些Message也不是马上就被处理的。在Message中存在一个 target,是Handler的一个引用,如果Message在Queue中存在的时间越长,就会导致Handler无法被回收。如果Handler是非静态的,则会导致Activity或者Service不会被回收。 由于AsyncTask内部也是Handler机制,同样存在内存泄漏的风险。 此种内存泄露,一般是临时性的。

    20.内存泄露检测有什么好方法?

    检测: 1、DDMS Heap发现内存泄露 dataObject totalSize的大小,是否稳定在一个范围内,如果操作程序,不断增加,说明内存泄露 2、使用Heap Tool进行内存快照前后对比 BlankActivity手动触发GC进行前后对比,对象是否被及时回收

    定位:

    1、MAT插件打开.hprof具体定位内存泄露: 查看histogram项,选中某一个对象,查看它的GC引用链,因为存在GC引用链的,说明无法回收 2、AndroidStudio的Allocation Tracker: 观测到期间的内存分配,哪些对象被创建,什么时候创建,从而准确定位

     

     

    Android开发面试经——4.常见Android进阶笔试题(更新中...) - 移动互联的寻梦之旅 - 博客频道 - CSDN.NET

    来源网址: http://blog.csdn.net/finddreams/article/details/44301359

     

    关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44301359

    上一篇文章我们已经了解了Android笔试的一些基础题目,

    [《Android开发面试经——2.常见Android基础笔试题》 ] (http://blog.csdn.net/finddreams/article/details/44219231) 笔试完,就是面试官问你问题了,相比笔试,面试我们往往会有些许紧张,因为不知道面试官会问什么奇怪的问题,要是问的问题刚好不懂,这时就更加头皮发麻了。为了能在面试提问中取得一个满意的表现,我特别整理了一下常见的面试官提的技术问题: Android开发面试经——5.常见面试官提问Android题① Android开发面试经——6.常见面试官提问Android题②(更新中…)

    但是做为一个有经验的开发者,仅仅知道基础题还是不够的,你的简历上说有两年以上工作经验的话,那面试官肯定会问一些深入性的问题,看你能否回答的出。所以为了找一个更好的工作,我们还需要去了解一下Android进阶的笔试题目:

    1.什么是ANR,如何避免?

    ANR:Application Not Responding。 在 Android 中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时,Android 就会显示 ANR 对话框了: ①.用户对应用程序的操作(如输入事件,按键、触摸屏事件)在5秒内无响应 ②. 广播接受器(BroadcastReceiver)在10秒内仍未执行完毕 Android 应用程序完全运行在一个独立的线程中(例如 main)。这就意味着,任何在主 线程中运行的,需要消耗大量时间的操作都会引发 ANR。因为此时,你的应用程序已经没有机会去响应输入事件和意向广播(Intentbroadcast)。 避免方法:Activity 应该在它的关键生命周期方法(如 onCreate()和 onResume())里尽可能少的去做创建操作, 潜在的耗时操作。例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者异步方式)来完成。 主线程应该为子线程提供一个 Handler,以便完成时能够提交给主线程。

    2.Handler机制原理?

    andriod 提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。 Looper 类用来管理特定线程内对象之间的消息交换 (MessageExchange)。 1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里的 MessageQueue(消息队列)。 2)Handler: 你可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 MessageQueue 里;或者接收 Looper 从 MessageQueue 取出)所送来的消息。 3) Message Queue(消息队列 ): 用来存放线程放入的消息。 4)线程: UI thread 通常就是 main thread, 而 Android 启动程序时会替它建立一个 MessageQueue。

    3.请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。

    简单的说,Handler获取当前线程中的 looper对象,looper 用来从存放 Message 的 MessageQueue中取出 Message,再有 Handler 进行 Message 的分发和处理. Message Queue(消息队列): 用来存放通过 Handler 发布的消息, 通常附属于某一个创建它的线程,可以通过 Looper.myQueue()得到当前线程的消息队列 Handler:可以发布或者处理一个消息或者操作一个 Runnable,通过 Handler发布消息, 消息将只会发送到与它关联的消息队列,然也只能处理该消息队列中的消息 Looper:是 Handler 和消息队列之间通讯桥梁,程序组件首先通过 Handler 把消息传递给 Looper,Looper 把消息放入队列。Looper 也把消息队列里的消息广播给所有的 Handler:Handler 接受到消息后调用 handleMessage进行处理 Message:消息的类型,在 Handler 类中的 handleMessage 方法中得到单个的消息进行处理 在单线程模型下, 为了线程通信问题, Android 设计了一个 Message Queue(消息队列), 线程间可以通过该 Message Queue 并结合 Handler 和 Looper 组件进行信息交换。 下面将对它 们进行分别介绍: 1. Message Message 消息,理解为线程间交流的信息,处理数据后台线程需要更新 UI ,则发送Message 内含一些数据给 UI 线程。 2. Handler Handler处理者,是 Message 的主要处理者,负责 Message 的发送,Message 内容的执行处理。后台线程就是通过传进来的 Handler对象引用来 sendMessage(Message)。 而使用 Handler,需要 implement 该类的 handleMessage(Message)方法,它是处理这些 Message 的操作内容,例如 Update UI 。通常需要子类化 Handler 来实现 handleMessage方法。 3. Message Queue Message Queue 消息队列,用来存放通过 Handler 发布的消息,按照先进先出执行。每个 message queue 都会有一个对应的 Handler。Handler 会向 messagequeue 通过两种方法发送消息:sendMessage 或 post。这两种消息都会插在 message queue 队尾并 按先进先出执行。但通过这两种方法发送的消息执行的方式略有不同:通过 sendMessage发送的是一个 message 对象,会被 Handler 的 handleMessage()函数处理;而通过 post 方法发送的是一个 runnable 对象,则会自己执行。 4. Looper Looper 是每条线程里的 Message Queue 的管家。Android 没有 Global 的MessageQueue,而 Android 会自动替主线程(UI 线程)建立 Message Queue,但在子线程里并没有建立 Message Queue。 所以调用 Looper.getMainLooper()得到的主线程的 Looper 不为 NULL,但调用 Looper.myLooper()得到当前线程的 Looper 就有可能为 NULL。

    4.Android 中线程与线程,进程与进程之间如何通信

    1、一个 Android 程序开始运行时,会单独启动一个 Process。 默认情况下,所有这个程序中的 Activity 或者 Service 都会跑在这个 Process。 默认情况下,一个 Android 程序也只有一个 Process,但一个 Process 下却可以有许多个 Thread。 2、一个 Android 程序开始运行时,就有一个主线程 MainThread 被创建。该线程主要负责 UI 界面的显示、更新和控件交互,所以又叫 UI Thread。 一个 Android 程序创建之初,一个 Process 呈现的是单线程模型–即 Main Thread, 所有的任务都在一个线程中运行。所以,Main Thread 所调用的每一个函数,其耗时应该 越短越好。而对于比较费时的工作,应该设法交给子线程去做,以避免阻塞主线程(主线程被阻塞,会导致程序假死 现象) 。 3、Android 单线程模型:Android UI 操作并不是线程安全的并且这些操作必须在 UI 线程中执行。如果在子线程中直接修改 UI,会导致异常。 4.Android 的 的 IPC ( 进程间通信 ) 机制 IPC 是内部进程通信的简称, 是共享 ” 命名管道 ” 的资源。Android 中的 IPC机制是为了让 Activity 和 Service之间可以随时的进行交互,故在 Android 中该机制,只适用于 Activity 和 Service之间的通信,类似于远程方法调用,类似于 C/S 模式的访问。通过定义 AIDL 接口文件来定义 IPC 接口。Servier 端实现 IPC接口,Client 端调用 IPC接口本地代理。

    5.Android应用程序框架

    6.View, surfaceView, GLSurfaceView的区别

    View 是最基础的,必须在 UI 主线程内更新画面,速度较慢。 SurfaceView 是 view 的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比 view 快 GLSurfaceView 是 SurfaceView 的子类,opengl 专用的。 区别:SurfaceView是从View基类中派生出来的显示类,直接子类有GLSurfaceView和VideoView,可以看出GL和视频播放以及Camera摄像头一般均使用SurfaceView SurfaceView和View最本质的区别在于,surfaceView是在一个新起的单独线程中可以重新绘制画面而View必须在UI的主线程中更新画面。 那么在UI的主线程中更新画面 可能会引发问题,比如你更新画面的时间过长,那么你的主UI线程会被你正在画的函数阻塞。那么将无法响应按键,触屏等消息。 当使用surfaceView 由于是在新的线程中更新画面所以不会阻塞你的UI主线程。但这也带来了另外一个问题,就是事件同步。比如你触屏了一下,你需要surfaceView中thread处理,一般就需要有一个event queue的设计来保存touch event,这会稍稍复杂一点,因为涉及到线程同步。

    7. AIDL的全称是什么?如何工作?

    AIDL 全称 Android Interface Definition Language(Android 接口描述语言)是一种接口描述语言 ; 编译器可以通过 aidl文件生成一段代码, 通过预先定义的接口达到两个进程内 部通信进程跨界对象访问的目的.AIDL 的 IPC 的机制和 COM 或 CORBA 类似 , 是基于接口的, 但它是轻量级的。 它使用代理类在客户端和实现层间传递值 . 如果要使用 AIDL, 需要完成2件事情 : 1. 引入AIDL的相关类 .; 2. 调用 aidl产生的 class.理论上 , 参数可以传递基本数据类型和String, 还有就是Bundle的派生类 当A进程要去调用B进程中的service时,并实现通信,我们通常都是通过AIDL来操作的 。 A工程: 首先我们在net.blogjava.mobile.aidlservice包中创建一个RemoteService.aidl文件,在里面我们自定义一个接口,含有方法get。ADT插件会在gen目录下自动生成一个RemoteService.java文件,该类中含有一个名为RemoteService.stub的内部类,该内部类中含有aidl文件接口的get方法。 说明一:aidl文件的位置不固定,可以任意 然后定义自己的MyService类,在MyService类中自定义一个内部类去继承RemoteService.stub这个内部类,实现get方法。在onBind方法中返回这个内部类的对象,系统会自动将这个对象封装成IBinder对象,传递给他的调用者。 其次需要在AndroidManifest.xml文件中配置MyService类,代码如下:

    <!-- 注册服务 -->

    <service android:name=".MyService">

    <intent-filter>

    <!-- 指定调用AIDL服务的ID -->

    <action android:name="net.blogjava.mobile.aidlservice.RemoteService" />

    </intent-filter>

    </service>

    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    为什么要指定调用AIDL服务的ID,就是要告诉外界MyService这个类能够被别的进程访问,只要别的进程知道这个ID,正是有了这个ID,B工程才能找到A工程实现通信。

    说明:AIDL并不需要权限 B工程: 首先我们要将A工程中生成的RemoteService.java文件拷贝到B工程中,在bindService方法中绑定aidl服务 绑定AIDL服务就是将RemoteService的ID作为intent的action参数。 说明:如果我们单独将RemoteService.aidl文件放在一个包里,那个在我们将gen目录下的该包拷贝到B工程中。如果我们将RemoteService.aidl文件和我们的其他类存放在一起,那么我们在B工程中就要建立相应的包,以保证RmoteService.java文件的报名正确,我们不能修改RemoteService.java文件 bindService(new Inten(“net.blogjava.mobile.aidlservice.RemoteService”), serviceConnection, Context.BIND_AUTO_CREATE); ServiceConnection的onServiceConnected(ComponentName name, IBinder service)方法中的service参数就是A工程中MyService类中继承了RemoteService.stub类的内部类的对象。

    8.关于AndroidOOM,以及如何避免?

    Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M,有的机器为24M。因此我们所能利用的内存空间是有限的。如果我们的内存占用超过了一定的水平就会出现OutOfMemory的错误。 ①.为什么会出现内存不够用的情况呢?我想原因主要有两个:由于我们程序的失误,长期保持某些资源(如Context)的引用,造成内存泄露,资源造成得不到释放。保存了多个耗用内存过大的对象(如Bitmap),造成内存超出限制。 ② .如何避免优化? 1、应该尽量避免static成员变量引用资源耗费过多的实例,比如Context。Context尽量使用Application Context,因为Application的Context的生命周期比较长,引用它不会出现内存泄露的问题。使用WeakReference代替强引用。比如可以使用WeakReference mContextRef; 2、线程也是造成内存泄露的一个重要的源头。线程产生内存泄露的主要原因在于线程生命周期的不可控。将线程的内部类,改为静态内部类。3、Bitmap问题:可以说出现OutOfMemory问题的绝大多数人,都是因为Bitmap的问题。因为Bitmap占用的内存实在是太多了,它是一个“超级大胖子”,特别是分辨率大的图片,如果要显示多张那问题就更显著了。 如何解决Bitmap带给我们的内存问题? 及时的销毁。  虽然,系统能够确认Bitmap分配的内存最终会被销毁,但是由于它占用的内存过多,所以很可能会超过java堆的限制。因此,在用完Bitmap时,要及时的recycle掉。recycle并不能确定立即就会将Bitmap释放掉,但是会给虚拟机一个暗示:“该图片可以释放了”。设置一定的采样率。  有时候,我们要显示的区域很小,没有必要将整个图片都加载出来,而只需要记载一个缩小过的图片,这时候可以设置一定的采样率,那么就可以大大减小占用的内存。如下面的代码: BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2;//图片宽高都为原来的二分之一,即图片为原来的四分之一。 4、巧妙的运用软引用(SoftRefrence)  有些时候,我们使用Bitmap后没有保留对它的引用,因此就无法调用Recycle函数。这时候巧妙的运用软引用,可以使Bitmap在内存快不足时得到有效的释放 5、及时释放Cursor; 6、尽量使用9path图片。Adapter要使用convertView复用等等;

    9. AsyncTask 的介绍

    在开发 Android 移动客户端的时候往往要使用多线程来进行操作, 我们通常会将耗时的操作放在单独的线程执行, 避免其占用主线程而给用户带来不好的用户体验。 但是在子线程中无法 去操作主线程(UI 线程) ,在子线程中操作 UI 线程会出现错误。因此 android 提供了一个类 Handler 来在子线程中来更新 UI 线程,用发消息的机制更新 UI 界面,呈现给用户。 这样就解决了子线程更新 UI 的问题。但是费时的任务操作总会启动一些匿名的子线程,太多的子线程给系统带来巨大的负担,随之带来一些性能问题。因此 android 提供了一个工具类AsyncTask,顾名思义异步执行任务。这个 AsyncTask 生来就是处理一些后台的比较耗时的任务,给用户带来良好用户体验的,从编程的语法上显得优雅了许多,不再需要子线程和Handler就可以完成异步操作并且刷新用户界面。

    10.说说mvc模式的原理,它在android中的运用

    答:android的官方建议应用程序的开发采用mvc模式。何谓mvc?  mvc是model,view,controller的缩写,mvc包含三个部分:   l、模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。   2、视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。   3、控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,想用用户出发的相关事件,交给m处理。  android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下: 1)视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对android了解的比较的多了话,就一定 可以想到在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通 信,幸运的是,android提供了它们之间非常方便的通信实现。  2)控制层(controller):android的控制层的重 任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务逻辑层处理, 这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。  3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。    11.根据自己的理解描述下Android数字签名。 答:(1)所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序 (2)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证 (3)如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。 (4)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能

    12. 谈谈对 Android NDK 的理解

    NDK 全称:Native Development Kit。 1、NDK 是一系列工具的集合。 * NDK 提供了一系列的工具,帮助开发者快速开发 C(或 C++)的动态库,并能自动将 so 和 java 应用 一起打包成 apk。这些工具对开发者的帮助是巨大的。 * NDK 集成了交叉编译器,并提供了相应的 mk 文件隔离 CPU、平台、ABI 等差异,开发人员只需要简单修改 mk 文件(指出“哪些文件需要编译”、“编译特性要求”等) ,就可以创建出 so。 * NDK 可以自动地将 so 和 Java 应用一起打包,极大地减轻了开发人员的打包工作。 2、NDK 提供了一份稳定、功能有限的 API 头文件声明。 Google 明确声明该 API 是稳定的,在后续所有版本中都稳定支持当前发布的 API。从该版本的 NDK 中看出,这些 API 支持的功能非常有限, 包含有:C 标准库(libc) 、标准数学库(libm) 、压缩库(libz) 、Log 库(liblog) 。

    13.ViewStub的应用

    在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。但是它的缺点就是,耗费资源。虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。 推荐的做法是使用android.view.ViewStub,ViewStub是一个轻量级的View,它一个看不见的,不占布局位置,占用资源非常小的控件。可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时候,或是调用了ViewStub.inflate()的时候,ViewStub所向的布局就会被Inflate和实例化,然后ViewStub的布局属性都会传给它所指向的布局。这样,就可以使用ViewStub来方便的在运行时,要还是不要显示某个布局。 但ViewStub也不是万能的,下面总结下ViewStub能做的事儿和什么时候该用ViewStub,什么时候该用可见性的控制。 首先来说说ViewStub的一些特点: 1. ViewStub只能Inflate一次,之后ViewStub对象会被置为空。按句话说,某个被ViewStub指定的布局被Inflate后,就不会够再通过ViewStub来控制它了。 2. ViewStub只能用来Inflate一个布局文件,而不是某个具体的View,当然也可以把View写在某个布局文件中。 基于以上的特点,那么可以考虑使用ViewStub的情况有: 1. 在程序的运行期间,某个布局在Inflate后,就不会有变化,除非重新启动。 因为ViewStub只能Inflate一次,之后会被置空,所以无法指望后面接着使用ViewStub来控制布局。所以当需要在运行时不止一次的显示和隐藏某个布局,那么ViewStub是做不到的。这时就只能使用View的可见性来控制了。 2. 想要控制显示与隐藏的是一个布局文件,而非某个View。 因为设置给ViewStub的只能是某个布局文件的Id,所以无法让它来控制某个View。 所以,如果想要控制某个View(如Button或TextView)的显示与隐藏,或者想要在运行时不断的显示与隐藏某个布局或View,只能使用View的可见性来控制。

     

     

    Android开发面试经——3.常见Java基础笔试题 - 移动互联的寻梦之旅 - 博客频道 - CSDN.NET

    来源网址: http://blog.csdn.net/finddreams/article/details/44403041

     

    关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44403041

    因为Androd使用Java语言来编程的,所以我们做Android开发全面的掌握Java基础是必须的。在面试的过程中,我们发现很多公司发的笔试题有很多知识点都是Java的,搞安卓久了,Java基础的一些知识点也都快忘了,今天就让我们来一起复习一些Java基础,希望能在面试中用到;

    1、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

    方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被”屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

    2、String和StringBuffer,StringBuilder的区别

    String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) String的长度是不可变的,StringBuffer,StringBuilder的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。

    3、说出ArrayList,Vector, LinkedList的存储性能和特性

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

    4.字符串“abcde”通过写一个函数不让调用第三方的字符串,实现一个字符串倒序,比如字符串“abcde”变成“edcba”

    String src = “abcde”; String dst = new StringBuffer(src).reverse().toString();

    5、Collection 和 Collections的区别。

    Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作

    6、final, finally, finalize的区别。

    final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

    7、sleep() 和 wait() 有什么区别?

    1.这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。 2.最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。 3.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用 4. Sleep需要捕获异常,而wait不需要

    8、同步和异步有何异同,在什么情况下分别使用他们?举例说明。

    如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

    9,抽象类与接口的区别(abstract与interface的区别)

    abstract可以修饰抽象方法,而一个类只要有一个抽象方法,就必须用abstract定义该类,即抽象类。 用interface修饰的类,里面的方法都是抽象方法,因此在定义接口的时候,可以直接不加那些修饰,系统会默认的添上去。接口里面的字段都是公有常量,即public static final修饰的字段。

    10、线程中wait,join,sleep,yield, notify,notifyall,synchronized,区别及联系

    1).sleep()方法 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。不推荐使用。sleep()使当前线程进入阻塞状态,在指定时间内不会执行。 2).wait()方法 在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待。线程会释放掉它所占有的“锁标志”,从而使别的线程有机会抢占该锁。 唤醒当前对象锁的等待线程使用notify或notifyAll方法,waite() 和notify()必须在synchronized函数或synchronized block中进行调用。 yield方法暂停当前正在执行的线程对象。yield()只是使当前线程重新回到可执行状态,所以执行 3)yield()的线程有可能在进入到可执行状态后马上又被执行。yield()只能使同优先级或更高优先级的线程有执行的机会。 4).join方法 等待该线程终止。等待调用join方法的线程结束,再继续执行。如:t.join();//主要用于等待t线程运行结束,若无此句,main则会执行完毕,导致结果不可预测。

    11、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

    接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

    12、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

    13、是否可以继承String类?

    String类是final类故不可以继承。

    14、java switch支持的数据类型:

    java支持的数据类型有五种 他们分别是: byte、char、short、int、枚举 以上是JDK1.6以前的版本。JDK1.7时,又增加了String,所以相对于JDK1.7而言就是六种了

    15、什么是单例模式,请写出一个来:

    Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 一般Singleton模式通常有几种种形式: 第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

    public class Singleton {

    private Singleton(){}

     

    //注意这是private 只供内部调用

    private static Singleton instance = new Singleton();

    //这里提供了一个供外部访问本class的静态方法,可以直接访问

    public static Singleton getInstance() {

    return instance;

    }

    }

    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    • 8

    • 9

    • 10

    • 11

    第二种形式:

     

    public class Singleton {

     

    private static Singleton instance = null;

     

    public static synchronized Singleton getInstance() {

    //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次

    //使用时生成实例,提高了效率!

    if (instance==null)

    instance=new Singleton();

    return instance; }

    }

    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    • 8

    • 9

    • 10

    • 11

    • 12

    • 13

    其他形式:

    定义一个类,它的构造函数为private的,所有方法为static的。 一般认为第一种形式要更加安全些

    16、Java常用的设计模式?说明工厂模式。

    Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例, 通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。 首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件 生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

     

     

    Android开发面试经——2.常见Android基础笔试题 - 移动互联的寻梦之旅 - 博客频道 - CSDN.NET

    来源网址: http://blog.csdn.net/finddreams/article/details/44219231

     

    关注finddreams博客: http://blog.csdn.net/finddreams/article/details/44219231

    正值跳槽的热季,整理一下Android面试中最常考的笔试题,为下次找工作时做好充分准备,这是Android的基础部分:

    1、Android四大组件是什么?作用以及应用场景?

    Android 的四大组件分别是是Activity,Service,BroadcastReceiver和ContentProvider;

    Activity:

    从字面上理解,Activity是活动的意思。一个Activity通常展现为一个可视化的用户界面,是Android程序与用户交互的窗口,也是Android组件中最基本也是最复杂的一个组件。从视觉效果来看,一个Activity占据当前的窗口,响应所有窗口事件,具备有控件,菜单等界面元素。从内部逻辑来看,Activity需要为了保持各个界面状态,需要做很多持久化的事情,还需要妥善管理生命周期,和一些转跳逻辑。

    Service

    服务是运行在后台的一个组件,从某从意义上说,服务就像一个没有界面的Activity。它们在很多Android的概念方面比较接近,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事件,定义好需要接受的Intent提供同步和异步的接口。

    BroadcastReceiver

    广播接收者,不执行任何任务,广播是一种广泛运用的在应用程序之间传输信息的机制 。而 BroadcastReceiver 是对发送出来的广播进行过滤接收并响应的一类组件。Broadcast Receiver 不包含任何用户界面。然而它们可以启动一个Activity以响应接受到的信息,或者通过NotificationManager通知用户。可以通过多种方式使用户知道有新的通知产生:闪动背景灯、震动设备、发出声音等等。通常程序会在状态栏上放置一个持久的图标,用户可以打开这个图标并读取通知信息。在Android中还有一个很重要的概念就是Intent,如果说Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递。那么Broadcast Receiver组件就提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。

    Content Provider

    即内容提供者,作为应用程序之间唯一的共享数据的途径,Content Provider 主要的功能就是存储并检索数据以及向其他应用程序提供访问数据。 对应用而言,也可以将底层数据封装成ContentProvider,这样可以有效的屏蔽底层操作的细节,并且使程序保持良好的扩展性和开放性。Android提供了一些主要数据类型的Contentprovider,比如音频、视频、图片和私人通讯录等。可在android.provider包下面找到一些android提供的Contentprovider。可以获得这些Contentprovider,查询它们包含的数据,当然前提是已获得适当的读取权限。如果我们想公开自己应用程序的数据,可以创建自己的 Content provider 的接口。

    2、android中的动画有哪几类,它们的特点和区别是什么?

    两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

    3、后台的activity被系统回收怎么办?如何在被系统回收之前保存当前状态?

    当一个Activity被pause或者stop的时候,这个Activity的对象实际上还是保存在内存中,因此这个Activity中的信息(成员和状态信息)还可以重新获取到.

    如果系统为了整理内存而销毁了Activity对象时,系统没法简单的原封不动地恢复先前的Activity对象及其状态信息. Activity中提供了一个方法:onSavedInstanceState(Bundle obj).当系统销毁一个Activity时,会将Activity的状态信息已键值对形式存放在bundle对象中. 第一次启动Activity时,这个bundle对象是空的,null.如果Activity被系统销毁了,然后用户要回退回去看的话,系统会调用这个Activity的onCreate方法,并把bundle对象传递过去.

    4. 请描述一下Activity 生命周期。

    5. 如何将一个Activity设置成窗口的样式。 在AndroidManifest.xml 中定义Activity的地方一句话android:theme=”@android:style/Theme.Dialog”或android:theme=”@android:style/Theme.Translucent”就变成半透明的

    6.注册广播有几种方式,有何优缺点?

    有两种,一种是代码动态注册: //生成广播处理 smsBroadCastReceiver = new SmsBroadCastReceiver(); //实例化过滤器并设置要过滤的广播

    IntentFilter intentFilter = new IntentFilter(“android.provider.Telephony.SMS_RECEIVED”);

    //注册广播

    BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter); 一种是在AndroidManifest.xml中配置广播

    <!--广播注册-->

    <receiver android:name=".SmsBroadCastReceiver">

    <intent-filter android:priority="20">

    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>

    </intent-filter>

    </receiver>

    1

    2

    3

    4

    5

    6

    两种注册类型的区别是:

    1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期 2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。 注册的方法有两种,一种是静态注册,一种是动态注册。 动态注册优点: 在 Android 的广播机制中, 动态注册的优先级是要高于静态注册优先级的 , 因此在必要的情况下,我们是需要动态注册广播接收器的。 静态注册优点:动态注册广播接收器还有一个特点,就是当用来注册的 Activity 关掉后 ,广播也就失效了。同时反映了静态注册的一个优势,就是无需担忧广播接收器是否被关闭 , 只要设备是开启状态,广播接收器就是打开着的。

    7.IntentService有何优点?

    普通的service ,默认运行在ui main 主线程 这是带有异步处理的service类, 异步处理的方法 OnHandleIntent() OnHandleIntent() 处理耗时的操作 Android的进程处理器现在会尽可能的不kill掉你

    8.横竖屏切换时候activity的生命周期?

    1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次   2、设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次   3、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法    9、如何将SQLite数据库(dictionary.db文件)与apk文件一起发布? 如何将打开res raw目录中的数据库文件?   解答:以将dictionary.db文件复制到res raw目录中 ,在Android中不能直接打开res raw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得res raw目录中资源的 InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite ;    10.AndroidManifest.xml文件中主要包含哪些信息 说明应用程序的java 包,该包名是应用程序的唯一标识; 描述应用程序的组件:该应用程序由哪些activity,service,broadcast receiver和content provider组成; 声明应用程序所必须具备的权限,用以访问受保护的部分API,以及与其他应用程序的交互; 声明应用程序所需要的Android API的最低版本级别,比如1.0,1.1,1.5; manifest:根节点,描述了 package 中所有的内容。 uses-permission:请求你的 package 正常运作所需赋予的安全许可。 permission: 声明了安全许可来限制哪些程序能你 package 中的组件和功能。 instrumentation:声明了用来测试此 package 或其他 package 指令组件的代码。 application:包含 package 中 application 级别组件声明的根节点。 activity:Activity 是用来与用户交互的主要工具。 receiver:IntentReceiver 能使的 application 获得数据的改变或者发生的操作,即使它当 前不在运行。 service:Service 是能在后台运行任意时间的组件。 provider:ContentProvider 是用来管理持久化数据并发布给其他应用程序使用的组件。

    11.Android数据储存方式

    一.SharedPreferences方式:它是 Android提供的用来存储一些简单配置信息的一种机制,采用了 XML 格式将数据存储到设备中。只能在同一个包内使用,不能在不同的包之间使用。 二.文件存储方式 /data/data/包名/files 内存里面 / context.openFileInput(name) 默认是私有的访问权限 三.SQLite数据库方式:SQLite 是 Android 所带的一个标准的数据库, 它支持 SQL语句,它是一个轻量级的嵌入式数据库。 四.内容提供器(Content provider)方式:主要用于应用程序之间进行数据交换,从而能够让其他的应用保存或读取此 Content Provider 的各种数据类型。 五. 网络存储方式: 通过网络上提供给我们的存储空间来上传(存储)和下载(获取)我们存储 在网络空间中的数据信息。

    12.Android中常见五种布局介绍

    FrameLayout(帧布局): 从屏幕的左上角开始布局,叠加显示, 实际应用 播放器的暂停按钮. LinearLayout (线性布局):可分为垂直布局,水平布局; AbsoluteLayout(绝对布局):用X,Y坐标来指定元素的位置; RelativeLayout(相对布局): 相对布局可以理解为某一个元素为参照物,来定位的布局方式。 TableLayout(表格布局):表格布局类似Html里面的Table。每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素,设定他的对齐方式 android:gravity=”” 。 每一个布局都有自己适合的方式,另外,这五个布局元素可以相互嵌套应用,做出美观的界面。

    13.Activity的四种启动模式?,activity与task的启动方式有哪些,她们的含义具体说明

    standard: 标准模式,一调用 startActivity()方法就会产生一个新的实例。 singleTop: 如果已经有一个实例位于 Activity 栈的顶部时, 就不产生新的实例, 而只是调用Activity 中的 newInstance()方法。如果不位于栈顶,会产生一个新的实例。 singleTask: 会在一个新的 task 中产生这个实例,以后每次调用都会使用这个,不会去产生 新的实例了。 singleInstance: 这个跟 singleTask 基本上是一样, 只有一个区别: 在这个模式下的 Activity实例所处的 task 中,只能有这个 activity实例,不能有其他的实例。

    14.Android 中的长度单位详解

    如果设置表示长度 、 高度等属性时可以使用 dp 或 sp。但如果设置字体,需要使用 sp。dp 是与密度无关,sp 除了与密度无关外,还与 scale 无关。如果屏幕密度为160,这时 dp 和 sp 和 px 是一样 的。1dp=1sp=1px, 也就是说,如果使用 dp 和 sp,系统会根据屏幕密度的变化自动进行转换 px :表示屏幕实际的象素 in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54 厘米。

    15.android 析 中有哪几种解析 l xml 的类, , , , 官方推荐哪种?以及它们的原 理和区别

    DOM 解析 优点: 1.XML 树在内存中完整存储,因此可以直接修改其数据和结构. 2.可以通过该解析器随时访问 XML 树中的任何一个节点. 3.DOM 解析器的 API 在使用上也相对比较简单. 缺点:如果 XML 文档体积比较大时,将文档读入内存是非常消耗系统资源的 Ø SAX 解析 优点: SAX 对内存的要求比较低,因为它让开发人员自己来决定所要处理的标签.特别是当开发人 员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现. 缺点: 用 SAX 方式进行 XML 解析时,需要顺序执行,所以很难访问到同一文档中的不同数据.此外,在基于该方式的解析编码过程也相对复杂 Ø Xmlpull 解析(官方推荐使用) android SDK 提供了 xmlpull api,xmlpull 和 sax 类似,是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序.因为是基于流的处理,因此 xmlpull 和 sax 都比较节 约内存资源,不会象 dom 那样要把所有节点以对橡树的形式展现在内存中.xmlpull 比 sax 更 简明,而且不需要扫描完整个流.

    16.ListView 的 优化方案

    (1),如果自定义适配器,那么在 getView 方法中要考虑方法传进来的参数 contentView 是否 为 null,如果为 null 就创建 contentView 并返回,如果不为 null 则直接使用。在这个方法中,尽可能少创建 view。 (2),给 contentView 设置 tag(setTag()),传入一个 viewHolder 对象,用于缓存要显示的数 据,可以达到图像数据异步加载的效果 (3),如果 listview 需要显示的 item 很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候,再去加载接下来的20 条。 (4) 快速滑动时不加载图片 (5) 如果自定义的item中有图片,需要处理图片(减少图片所占内存) 1.对图片进行边界压缩 2.用option类来保存图片大小 3.避免图片的实时缩放,最好预先缩放到视图大小 (6)尽量避免在listview适配器中使用线程,因为线程是产生内存泄露的主要原因在于线程的生命周期不可控。

    17.Android中intent的作用

    在一个 Android 应用中,主要是由一些组件组成(Activity,Service,ContentProvider,etc.) 在这些组件之间的通讯中,由 Intent 协助完成。 Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据 进行描述,Android 则根据此 Intent 的描述,负责找到对应的组件,将 Intent 传递给调用的组件,并完成组件的调用。Intent 在这里起着实现调用者与被调用者之间的解耦作用。 有两种方式,一种是显示匹配,一种是隐示匹配; 显示:明确的指定要跳转的Activity,或者Service等; 隐示:隐式匹配,首先要匹配 Intent 的几项值:Action,Category, Data/Type,Component如果填写了 Componet 就是这就形成了显示匹配。 1.如果你填写了 Action, 如果有一个程序的 Manifest.xml 中的某一个 Activity 的 IntentFilter 段中定义了包含了相同的 Action 那么这个 Intent 就与这个目标 Action 匹配, 如果这个 Filter段中没有定义 Type,Category,那么这个 Activity 就匹配了。但是如果手机中有两个以上的程序匹配,那么就会弹出一个对话可框来提示说明。 2,data/type,你可以用 Uri 来做为 data,比如 Uri uri = Uri.parse(http://www.google.com ); Intent i = new Intent(Intent.ACTION_VIEW,uri);手机的 Intent 分发过程中,会根据 http://www.google.com 的 scheme 判断出数据类型 type手机的 Brower 则能匹配它,在 Brower 的 Manifest.xml 中的 IntenFilter中首先有ACTION_VIEW Action,也能处理 http:的 type; 3,至于分类 Category,一般不要去在 Intent 中设置它,如果你写 Intent 的接收者,就在Manifest.xml 的 Activity 的 IntentFilter 中包含 android.category.DEFAULT,这样所有不设置Category(Intent.addCategory(String c);)的 Intent 都会与这个 Category 匹配。 4,extras(附加信息) ,是其它所有附加信息的集合。使用 extras 可以为组件提供扩展信息 ,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在 extras里,传给电子邮件发送组件。

    18.如何退出 Activity ?如何安全退出?

    对于单一 Activity 的应用来说,退出很简单,直接 finish()即可。 当然,也可以用 killProcess()和 System.exit()这样的方法。 为了编程方便,最好定义一个 Activity 基类,处理这些共通问题。 1、记录打开的 Activity: 每打开一个 Activity,就记录下来。在需要退出时,关闭每一个 Activity 即可。 2、发送特定广播: 在需要结束应用时,发送一个特定的广播,每个 Activity 收到广播后,关闭即可。

     

     

    Android开发面试经——1.常见人事面试问题 - 移动互联的寻梦之旅 - 博客频道 - CSDN.NET

    来源网址: http://blog.csdn.net/finddreams/article/details/44199779

     

          做为程序员,我们都是有梦想的人,有时候当我们不满足现状,想要进一步提升自己的能力,拓展自己的视野时,跳槽可能是一个我们终将面对的选择。可是我们的工作是成天和电脑打交道,造成我们的人际交往,交流能力不是很强,在面试上我们往往要准备的很充分,才能获得一份心仪的好工作,接下来我给大家整理一下面试中常见的一些问题,包括人事面试和笔试题,今天就来说说人事面试:

    1、请你自我介绍一下你自己?

    回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。

    2、你对加班的看法?

    回答提示:事实上做为一枚程序猿,加班熬夜是我们的标配,比较少的公司会有不加班的现象,因为你不知道什么时候你的程序就是那么不听话的崩溃了,这时你就得第一时间去处理好bug,紧急的修复并上线。

    回答样本:如果是工作需要我会义不容辞加班,我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时,我也会提高工作效率,减少不必要的加班。

    3、你觉得你个性上最大的优点是什么?

    回答提示:沉着冷静、条理清楚、立场坚定、顽强向上、乐于助人和关心他人、适应能力和幽默感、乐观和友爱。

    4、说说你最大的缺点?

    回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌岌可危了。业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分,企业喜欢聪明的求职者。

    5、你对薪资的要求?

    回答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱,他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。如果你自己必须说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。

    回答样本一:我对工资没有硬性要求,我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多。

    回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训,而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。

    实战面试谈薪水

    在面试时和公司谈薪资,有几点是要注意的:

    •不要在一面、二面、三面等等过程中主动打探薪水、福利等,一般这会给对方留下比较差的印象,认为你只在乎钱。

    •在确认公司准备聘用你之前不要谈钱,因为只有公司决定聘用你的时候,才是合适的时机。 •不要先开口谈钱,如果公司决定聘用你,那他们肯定会在做出决定后和你谈薪水。 •确定谁是要和你谈薪水的那个人,有时是 HR ,有时是副总、总监之类的,你无需询问,也会有机会知道的。如果是 HR 来和你谈薪水,她们多半是从技术线拿到了一个范围,然后会先压低了来和你谈,要做好心理准备,适当坚持一个比 HR 提出的更高的薪水。如果是技术线上的领导直接和你谈,我想你先要对面试的过程有个总结,了解这个人对你的印象,他是对你有强烈的兴趣,还是觉得你差强人意。如果是后者,你坚持高于对方给出的薪水,很可能没戏。无论哪种,你都要对这个职位表示出足够的兴趣来,同时也要表明你在意的不是薪水本身,而是薪水是否能与你的能力、你可以对公司带来的价值相匹配。 •被问及期望的薪水这类问题时,不要说具体的数字,如果一定要说,说一个范围。 •不要透露你现在的薪水,因为公司往往会根据你现在的薪水来给你定价。 •如果实在躲不过,一定要说现在的薪水,切忌撒圆不了的谎,虚报一大截子并不是明智的做法。 HR 们远比你想象的有能力,她们很可能和你之前所在公司的 HR 或某些人认识,能在做背景调查时问到你的薪水。 •如果对方拿你现在的薪水说事儿(碰巧你现在薪水较低),你应该表明你现在的薪水与能力严重错位,是不合理的,体现不了你的价值 不管你了解了多少谈判技巧,摆平自己的心态很重要。有一部分程序员觉得谈薪资谈来谈去怪不好意思怪伤感情的,其实不必,就跟你在商场买衣服一样,争取到合理的价位是人之常情,而且如果你不情不愿地进到了公司,时候发现被压低了工资,会产生非常消极的影响,不管对自己还是对公司,所以呢,你肯进入公司之前谈个明白,是对双方负责任的体现,因此你就不必担心这个过程会有多大的不良影响。

    6、在三到五年的时间内,你的职业规划?

    回答提示:这是每一个应聘者都不希望被问到的问题,但是几乎每个人都会被问到,比较多的答案是“管理者”。但是近几年来,许多公司都已经建立了专门的技术途径。这些工作地位往往被称作“顾问”、“参议技师”或“高级软件工程师”等等。当然,说出其他一些你感兴趣的职位也是可以的,比如产品销售部经理,生产部经理等一些与你的专业有相关背景的工作。要知道,考官总是喜欢有进取心的应聘者,此时如果说“不知道”,或许就会使你丧失一个好机会。最普通的回答应该是“我准备在技术领域有所作为”或“我希望能按照公司的管理思路发展”。

    7、你还有什么问题要问吗?

    回答提示:企业的这个问题看上去可有可无,其实很关键,企业不喜欢说“没问题”的人,因为其很注重员工的个性和创新能力。企业不喜欢求职者问个人福利之类的问题,如果有人这样问:贵公司对新入公司的员工有没有什么培训项目,我可以参加吗?或者说贵公司的晋升机制是什么样的?企业将很欢迎,因为体现出你对学习的热情和对公司的忠诚度以及你的上

    8、谈谈你对跳槽的看法?

    回答提示:①正常的“跳槽”能促进人才合理流动,应该支持。②频繁的跳槽对单位和个人双方都不利,应该反对。进心。

    9、为什么要离职?

    回答提示:回答这个问题时一定要小心,就算在前一个工作受到再大的委屈,对公司有多少的怨言,都千万不要表现出来,尤其要避免对公司本身主管的批评,避免面试官的负面情绪及印象。建议此时最好的回答方式是将问题归咎在自己身上,例如觉得工作没有学习发展的空间,自己想在面试工作的相关产业中多加学习,或是前一份工作与自己的生涯规划不合等等,回答的答案最好是积极正面的。

    回答样本:我希望能获得一份更好的工作,如果机会来临,我会抓住。我觉得目前的工作,已经达到顶峰,即沒有升迁机会。

    10、你对于我们公司了解多少?

    回答提示:在去公司面试前上网查一下该公司主营业务。如回答:贵公司有意改变策略,加强与国外大厂的OEM合作,自有品牌的部分则透过海外经销商。

    11、请说出你选择这份工作的动机?

    回答提示:这是想知道面试者对这份工作的热忱及理解度,并筛选因一时兴起而来应试的人,如果是无经验者,可以强调“就算职种不同,也希望有机会发挥之前的经验”。

    12、你最擅长的技术方向是什么?

    回答提示:说和你要应聘的职位相关的课程,表现一下自己的热诚没有什么坏处。

    13、喜欢这份工作的哪一点?

    回答提示:相信其实大家心中一定都有答案了吧!每个人的价值观不同,自然评断的标准也会不同,但是,在回答面试官这个问题时可不能太直接就把自己心理的话说出来,尤其是薪资方面的问题,不过一些无伤大雅的回答是不错的考虑,如交通方便,工作性质及内容颇能符合自己的兴趣等等都是不错的答案,不过如果这时自己能仔细思考出这份工作的与众不同之处,相信在面试上会大大加分。

    14、你为什么愿意到我们公司来工作?

    回答提示:对于这个问题,你要格外小心,如果你已经对该单位作了研究,你可以回答一些详细的原因,像“公司本身的高技术开发环境很吸引我。”、“我同公司出生在同样的时代,我希望能够进入一家与我共同成长的公司。”、“你们公司一直都稳定发展,在近几年来在市场上很有竞争力。”、“我认为贵公司能够给我提供一个与众不同的发展道路。”这都显示出你已经做了一些调查,也说明你对自己的未来有了较为具体的远景规划。

    15、在完成某项工作时,你认为领导要求的方式不是最好的,自己还有更好的方法,你应该怎么做?

    回答提示:①.原则上我会尊重和服从领导的工作安排;同时私底下找机会以请教的口吻,婉转地表达自己的想法,看看领导是否能改变想法。②如果领导没有采纳我的建议,我也同样会按领导的要求认真地去完成这项工作。③.还有一种情况,假如领导要求的方式违背原则,我会坚决提出反对意见,如领导仍固执己见,我会毫不犹豫地再向上级领导反映。

    16、如何安排自己的时间?会不会排斥加班?

    回答提示:基本上,如果上班工作有效率,工作量合理的话,应该不太需要加班。可是我也知道有时候很难避免加班,加上现在工作都采用责任制,所以我会调配自己的时间,全力配合。

    分析:虽然不会有人心甘情愿的加班,但依旧要表现出高配合度的诚意。

    17、何时可以到职?

    回答提示:大多数企业会关心就职时间,最好是回答“如果被录用的话,到职日可按公司规定上班”,但如果还未辞去上一个工作、上班时间又太近,似乎有些强人所难,因为交接至少要一个月的时间,应进一步说明原因,录取公司应该会通融的。

    18、想过创业吗?

    回答提示:这个问题可以显示你的冲劲,但如果你的回答是“有”的话,千万小心,下一个问题可能就是:那么为什么你不这样做呢?

    19、怎样看待学历和能力?

    回答提示:学历我想只要是大学专科的学历,就表明觉得我具备了根本的学习能力。剩下的,你是学士也好,还是博士也好,对于这一点的讨论,不是看你学了多少知识,而是看你在这个领域上发挥了什么,也就是所说的能力问题。一个人工作能力的高低直接决定其职场命运,而学历的高低只是进入一个企业的敲门砖,如果贵公司把学历卡在博士上,我就无法进入贵公司,当然这不一定只是我个人的损失,如果一个专科生都能完成的工作,您又何必非要招聘一位博士生呢?

    常见的人事面试问题就整理到这里,这些都是面试中常问到的问题,只要看一遍就可以了,想想面试的时候该怎么措辞才恰当,虽然我们不是很擅长交际,但是我们的学习能力是很强的,做编程的,那智商,你懂得!

     

     

    Android开发面试经——6.常见面试官提问Android题②(更新中...) - 移动互联的寻梦之旅 - 博客频道 - CSDN.NET

    来源网址: http://blog.csdn.net/finddreams/article/details/44560061

     

    关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44560061

    1.HttpURLConnection和HttpClient他们各自的优缺点是什么? HttpUrlConnection 在 2.3 以前的版本是有 bug 的,所以之前的版本推荐使用 HttpClient,但是 google 现在已经不维护 HttpClient 了,5.1里面已经把 HttpClient 标过期。另外 HttpURLConnection 支持gzip压缩等,推荐首选它。 在 Froyo(2.2) 之前,HttpURLConnection 有个重大 Bug,调用 close() 函数会影响连接池,导致连接复用失效,所以在 Froyo 之前使用 HttpURLConnection 需要关闭 keepAlive。 另外在 Gingerbread(2.3) HttpURLConnection 默认开启了 gzip 压缩,提高了 HTTPS 的性能,Ice Cream Sandwich(4.0) HttpURLConnection 支持了请求结果缓存。 再加上 HttpURLConnection 本身 API 相对简单,所以对 Android 来说,在 2.3 之后建议使用 HttpURLConnection,之前建议使用 AndroidHttpClient。

    2.Android开发中XML解析方式的比较 ,及优缺点?

    DOM,SAX,Pull解析。 SAX解析器的优点是解析速度快,占用内存少;

    DOM在内存中以树形结构存放,因此检索和更新效率会更高。但是对于特别大的文档,解析和加载整个文档将会很耗资源,不适合移动端;

    PULL解析器的运行方式和SAX类似,都是基于事件的模式,PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用PULL解析器。

    3.请问平时开发过程中,你是如何做到多分辨率适配的?

    1.根据不同分辨率建立不同的布局文件 2.根据分辨率不同建立不同分辨率的资源图片 3.在程序启动时,获取当前屏幕的分辨率和密度,在代码中进行适配 4.为不同分辨率的写不同的dimen文件。 5.其实还有就是多使用fragement

    4. 谈谈你在工作中是怎样解决一个bug的?

    1.看Log日志 2.Log解决不了就断点调试 3.如果debug不行 4.就在异常代码的附近Log.e(“error”,”1”);,2,3,4,5,6,7,8,9 每隔一行一个Log输出,看结果 5.找到问题,自行找思路。如果是技术瓶颈,就google之

    5.声明ViewHolder内部类时,为什么建议使用static关键字?

    其实这个是考静态内部类和非静态内部类的主要区别之一。非静态内部类会隐式持有外部类的引用,就像大家经常将自定义的adapter在Activity类里,然后在adapter类里面是可以随意调用外部activity的方法的。当你将内部类定义为static时,你就调用不了外部类的实例方法了,因为这时候静态内部类是不持有外部类的引用的。声明ViewHolder静态内部类,可以将ViewHolder和外部类解引用。大家会说一般ViewHolder都很简单,不定义为static也没事吧。确实如此,但是如果你将它定义为static的,说明你懂这些含义。万一有一天你在这个ViewHolder加入一些复杂逻辑,做了一些耗时工作,那么如果ViewHolder是非静态内部类的话,就很容易出现内存泄露。如果是静态的话,你就不能直接引用外部类,迫使你关注如何避免相互引用。 所以将 ViewHolder内部类 定义为静态的,是一种好习惯. 非静态内部类隐式持有外部类的强引用,只是可能会导致内存泄露,而一般情况下在使用viewhodler是不会导致内存泄露的,加static是一个比较好的习惯

    6.如何在不失真的条件下显示一张超高清的图片或者长图?

    1、通过计算BitmapFactory.Options 对象的inSamleSize 值 等比的压缩图片 。 2、使用WebView来加载该图片; 3、使用MapView或者TileView来显示图片(类似地图的机制);

    7. Android中有哪些方法实现定时和延时任务?它们的适用场景是什么?

    倒计时类 用CountDownTimer

    延迟类

    CountDownTimer,可巧妙的将countDownInterval设成和millisInFuture一样,这样就只会调用一次onTick和一次onFinish handler.sendMessageDelayed,可参考CountDownTimer的内部实现,简化一下,个人比较推荐这个 TimerTask,代码写起来比较乱 Thread.sleep,感觉这种不太好 使用Handler方法postDelay(runnable, delayTime)

    定时类

    参照延迟类的,自己计算好要延迟多少时间 handler.sendMessageAtTime AlarmManager,适用于定时比较长远的时间,例如闹铃

    8.谈谈你对StrongReference、WeakReference和SoftReference的认识

    强引用(StrongReference):就是在代码中普遍存在的,类似Object obj = new Object()这类的引用,只要强引用还存在,GC永远不会回收掉被引用的对象。 软引用(SoftReference):用来描述一些还有用但非必须的对象。对于软引用关联着的对象,在系统将要发生内存溢出异常时,将会把这些对象列入回收范围之中进行第二次回收。如果这次回收还没有足够的内存,才会抛出内存溢出异常。在JDK 1.2之后,提供了SoftReference类来实习软引用。

    弱引用(WeakReference):也是用来描述非必须对象的,但是它的强度比软引用更弱一些,被弱引用关联的对象只能生存到了下一次GC发生之前。当GC工作时,无论当时内存是否足够,都会回收只被弱引用关联的对象。在JDK 1.2之后,提供了WeakReference类来实现弱引用。

    虚引用(PhantomReference):这个引用po主没有提到,不过也可以顺带了解一下。虚引用也称幽灵引用或者幻影引用,它是最弱的一种引用关系。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用来取得一个对象实例。为一个对象设置虚引用的唯一目的就是在这个对象被GC回收是收到一个系统通知。在JDK 1.2之后提供了PhantomReference类来实现虚引用。

    9.你应用中的网络层是怎么设计的?

    1. android-async-http. 封装了下常用的方法,get post 上传 下载 ,所有的请求我都是用的同步请求. 具体的用法一般都是和业务逻辑在一起,而我的业务逻辑是用异步去处理的. 关于网络请求结果的缓存,我是单独处理的.并没有放在网络层.

    2.在HttpUrlConnection基础上封装, 包括请求成功, 失败, 请求中, 网络问题等封装, 利用广播与UI交互

    3.直接使用xUtils,afinal,okHttp,Volley等开源第三方框架;

    Bitmap是android中经常使用的一个类,它代表了一个图片资源。

    Bitmap消耗内存很严重,如果不注意优化代码,经常会出现OOM问题,优化方式通常有这么几种: 1. 使用缓存; 2. 压缩图片; 3. 及时回收;

    10.谈谈你对Bitmap的理解, 什么时候应该手动调用bitmap.recycle()?

    至于什么时候需要手动调用recycle,这就看具体场景了,原则是当我们不再使用Bitmao时,需要回收之。另外,我们需要注意,2.3之前Bitmap对象与像素数据是分开存放的,Bitmap对象存在java Heap中而像素数据存放在Native Memory中,这时很有必要调用recycle回收内存。但是2.3之后,Bitmap对象和像素数据都是存在Heap中,GC可以回收其内存。

    11.ViewPager中加载Fragment的优化问题?如何做到微信那样切换界面时的延时加载?

    利用fragment中的setUserVisibleHint这个方法可以来做到.

    private boolean hasLoadedOnce = false; // your boolean field

     

    @Override

    public void setUserVisibleHint(boolean isVisibleToUser) {

    super.setUserVisibleHint(isVisibleToUser);

     

    if (this.isVisible()) {

    // we check that the fragment is becoming visible

    if (isVisibleToUser && !hasLoadedOnce) {

    //do something

    }

    }

    }

    }

    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    • 8

    • 9

    • 10

    • 11

    • 12

    • 13

    • 14

    12什么是aar?aar和jar有什么区别?

    “aar”包是 Android 的类库项目的二进制发行包。

    文件扩展名是.aar,maven 项目类型应该也是aar,但文件本身是带有以下各项的 zip 文件:

    /AndroidManifest.xml (mandatory)

    /classes.jar (mandatory) /res/ (mandatory) /R.txt (mandatory) /assets/ (optional) /libs/*.jar (optional) /jni//*.so (optional) /proguard.txt (optional) /lint.jar (optional) 这些条目是直接位于 zip 文件根目录的。 其中R.txt 文件是aapt带参数–output-text-symbols的输出结果。

    jar打包不能包含资源文件,比如一些drawable文件、xml资源文件之类的,aar可以。

    13.如何加密Url防止被黑?

    加密到JNI里面还是会通过抓包工具抓取到.最后的方式就是进行HTTPS证书双向加密验证

    14.Android fragment和activity的区别

    你可以理解Fragment是一种特殊的View,负责一个模块或者一个特殊部分的展示。 大部分Fragment是依托于Activity存在的,由Activity的FragmentManager来管理 Fragment可以解决多Activity的问题,即将3.0之前的频繁Activity跳转改成一个Activity内Fragment的切换。 Fragment可以解决碎片化的问题。 fragment是android3.0新增的 fragment可以重用 fragment必须嵌套在activity中使用,它的生命周期受activity的影响。

    15.Service和广播 BroadcastReceivre会不会出现ANR?

    Service,广播 会出现ANR 服务, 广播都是主线程中, 既然是主线程 当然会anr 所以耗时操作还是必须另起线程 通俗的说超时时间:Activity 5秒, Broadcast 10秒, Server 20秒

    16.你在平时开发中会使用到哪些设计模式,能谈谈这些设计模式的使用场景吗?

    平时用的比较多有单例模式(在内存中仅实例化一个对象时使用),适配器模式(典型的就是ListView和GridView的适配器),建造者模式(AlertDialog.Builder),观察者模式可能比较隐蔽,在Android源码中BaseAdapater的NotifyDataSetChanged的实现(?) 单例:DownloadManager

     

    转载于:https://my.oschina.net/u/2288454/blog/1922806

    展开全文
  • WIFI模块各种常见的配网方式说明及其比较

    万次阅读 多人点赞 2017-11-25 13:48:37
    WIFI模块各种常见的配网方式说明及其比较 本文汇总介绍了目前市面上各种WIFI模块的常见的配网方式的原理和实现,对比了各种配网方式的优势和局限,得出结论,WEB配网是最直接、最简单、最灵活、约束条件最少的配网...
  • Android开发面试经——5.常见面试官提问Android题①

    万次阅读 多人点赞 2015-03-21 10:37:38
    一般的面试流程是笔试完就接着是面试了,面试时技术经理会问你一些你工作中遇到的Android方面的...今天我就给大家整理一些,面试中常见的面试官提的一些问题? 1.要做一个尽可能流畅的ListView,你平时是如何优化的?
  • 7. Android中有哪些方法实现定时和延时任务?它们的适用场景是什么?   倒计时类  用CountDownTimer 延迟类  CountDownTimer,可巧妙的将countDownInterval设成和millisInFuture一样,这样就只会调用...
  • HttpUrlConnection 在 2.3 以前的版本是 bug 的,所以之前的版本推荐使用 HttpClient,但是 google 现在已经不维护 HttpClient 了,5.1里面已经把 HttpClient 标过期。另外 HttpURLConnection 支持gzip压缩等,...
  • 整理了常见的一些问题,持续补充。 问题集中在站会 Scrum只是一个协作方案,充分利用每日的开始进行信息共享,集中大家注意力。不能因为了Scrum就把每日的问题都集中在晨会上,平时问题应该是及时提出尽快沟通...
  • 提问的智慧

    千次阅读 2018-10-24 15:05:07
    这取决于挖出答案的难度,同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案。 首先你必须明白,黑客们只偏爱艰巨的任务,或者能激发他们思维的好问题。 如若不然,我们还来干吗?如果你...
  • 十月一的假期间,在知乎上看到一个问题《网页游戏都有哪些安全问题?》,我是一个网页游戏开发者,对这个问题非常感兴趣,印象比较深刻。当时是在游玩,也没时间细看这个问题。后来,在微博上,一位朋友的转发,又...
  • 程序员如何提问

    2019-03-10 22:30:59
    当然,我们所说的提问者是开发人员,是本身对于问题兴趣和处理能力的。 想象一下你是一个大牛,你会怎样提问,你会回答什么问题。 提问之前 在你准备提问的论坛先查找是否已人问过。 百度,谷歌查找答案。 阅读...
  • 提问的智慧/ 如何优雅的提问

    千次阅读 2020-07-30 18:07:31
    提问在学习中占据着重要的位置,很多人对知识好奇,却收效甚少,原因他们是尚未掌握正确提问的方法,因此,我尝试修改《提问的智慧》,发布出来。原作者是Eric S. Raymond,这篇文章在黑客界拥有很高的地位,指引...
  • 在体验学习课程中,关于引导的部分,通常比较直观且能看到的就是引导者提问的行为(当然,体验学习中的引导行为并不是只有提问),引导者很多时候都是通过提问与学员进行互动的。我想与各位分享一下,我们为什么要在...
  • 提问的学问

    2012-01-04 19:11:27
    学习并且问即为学问,即到底提问有哪些学问呢? 作者:Eric Steven Raymond 原文:How To Ask Questions The Smart Way 翻译:王刚 时间:2004年11月2日 一、目录 译文 弃权申明 引言 提问提问时 ...
  • 提问的智慧 - Eric Steven Raymond

    千次阅读 2013-04-19 18:47:46
    提问的智慧(How To Ask Questions The Smart Way)作者:Eric Steven Raymond在黑客的世界里,你所提技术问题的解答很大程度上取决于你提问方式与解决此问题的难度,"提问的智慧"此文将教你如何提问才更可能得到...
  • 欢迎去我的个人网站:KuGames.Net 【首先感谢“提问的艺术”带来的灵感】 ...文/Sε√ēη(KuGames)  ...每次在逛论坛看贴吧玩知道的时候,总能看到很多人提问题的方法千奇百怪。...要懂得提问
  • Java新手程序员提问和解决问题的正确姿势

    千次阅读 多人点赞 2019-05-31 23:54:10
    常见的是问题很笼统,好像大神都会特异功能,都可以穿越时空,逆转到过去来到他的电脑旁看到了事情的经过一样。 描述不清楚,没有配图,没有交代清楚背景等等。 本文结合自己的体会,提几点建议。 二、建议 ...
  • 以太坊数据同步常见问题集锦

    万次阅读 2018-03-17 17:28:00
    以太坊数据同步是新手入门的必经阶段,在技术讨论群中(659809063)经常重复的被提问到。这篇博文就给大家整理一下常见的问题列表,以便大家学习。 常见问题列表 区块差几十块始终同步不完,怎么办? 这是...
  • 问答常见问题

    千次阅读 2018-10-22 13:58:40
    ask.csdn.net的服务对象主要是专业、活力、热爱编程的人。我们认为好的问题里都包含一些源代码!如果您的问题包括以下内容: • 一个具体的编程问题 • 一个软件算法 •被程序员常用的软件、工具 •关于编程...
  • 提问的艺术

    千次阅读 2012-08-12 21:46:12
    在 黑客 的世界,你所提技术问题的回答很大程度上取决于你提问方式与解决此问题的难度,本文将教你如何提问才更可能得到满意的答复。 开源程序的使用已经很广,你通常可以从其它更经验的用户而不是黑客...
  • 常见的信号: SIGHUP:用户从终端注销,所有已启动进程都将收到该进程。系统缺省状态下对该信号的处理是终止进程 SIGINT:程序终止信号。程序运行过程中,按Ctrl+C键将产生该信号 SIGQUIT:程序退出信号。程序...
  • 常见人事问题

    千次阅读 2016-10-09 10:34:03
    整体素养的常见问题 一、请你自我介绍一下你自己? (面试官目的:深度了解求职者,看求职者基本的沟通和自我认知能力) NO: 只说姓名、年龄、爱好等基本的信息后就没了。只重复简历里的内容,如工作经验就...
  • 提问的艺术》读后感

    万次阅读 2017-02-25 15:02:50
    前言 提问前 他明明能帮到我却不帮我 提问前必知必会的一些事 ...总结前言众所周知,你所提技术问题的解答很大程度上取决于你提问方式与解决此问题的难度,但是怎么清楚的让经验的人明白你表述的问题,让你获得最

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,525
精华内容 10,610
关键字:

常见的提问方式有哪些