点标签看更多好帖

Java工程师最喜欢提问“小白”哪些问题?汇道科技告诉你

[复制链接]

55

主题

55

帖子

225

积分

中级会员

Rank: 3Rank: 3

积分
225
分享到:
发表于 2017-3-14 15:49:31 | 显示全部楼层 |阅读模式
     刚进入职场,对一切陌生又好奇。初入职场的“小白”和久经职场的老司机,之间总会有一场“交锋”让你以最快的速度融入团队,关于java工程师最喜欢提问职场新进小白的问题,以此来摸清楚你的专业水平程度。汇道小编汇总了下,希望对新进职场的“小白们”有所帮助。
1、有没有用过自定义View?
    答:有用过,一般指定View都需要进行这几个步骤,首先可以自定义一些自己的属性,在res/values/attrs.xml里面定义,然后在layout中使用,在View中通过context.obtainStyledAttributes(attrs,R.styleable.自定义属性的名字)进行获取。然后在测量onMeasure,一般通过他的三个模式(EXACTLY,AT_MODE,,UNSPECIFIED)进行测量,调用setMeasuredDimension进行传入设置的值。接着如果是ViewGroupt的话我们还需要设置下子View的位置,一般是通过requestLayout去触发onLayout的方法的。最后在onDraw里面通过Canvas的一些方法进行绘制。如果需要进行触摸事件的话,一般需要有实现onTouchEvent事件,注意,如果需要多点触摸,需要实现ACTION_POINTER_DOWN和ACTION_POINTER_UP进行处理。
2、layout_weight怎么理解?
    答:layout_weight的尺寸分配一般是先满足设置尺寸的分配然后剩下的尺寸在进行比例分配的。如果一个view需要设置1:2的比例显示,可以在LinearLayout中设置weightSum进行设置总的比例,然后在设置子View的比例。
3、你了解Handler吗?Handler机制是什么?
    答:Handler是Android官方给我们提供的一套更新UI线程的机制,也是一套消息处理机制,可以通过Handler来处理消息,更新UI等。
然后Handler机制大约是这样的:首先Handler发送一个消息MessageQueue里面,然后通过Looper的loop方法进行无限循环,如果产生了一个新消息,那么就调用handler的handlermessage方法进行余下的操作。之所以这样做的原因是因为避免多线程并发更新UI线程所产生的问题的,如果我们允许其他子线程都可以更新界面,那么势必会造成界面的错乱(因为没有加锁机制),如果我们加锁,又会影响速度,所以,只能在主线程即UI线程里面更新界面。
4、只能在UI线程里面更新界面吗?
    答:不一定,之所以子线程不能更新界面,是因为Android在线程的方法里面采用checkThread进行判断是否是主线程,而这个方法是在ViewRootImpl中的,这个类是在onResume里面才生成的,因此,如果这个时候子线程在onCreate方法里面生成更新UI,而且没有做阻塞,就是耗时多的操作,还是可以更新UI的。
5、Android子线程更新UI的方式有几种?
    答:一般情况下,我们都采用Handler的方式进行更新UI,当然,代码层的实现有不同的方法,比如可以使用Handler的post方法进行更新UI,或者用Handler的sendMessage方法进行更新UI,或者通过View的post方法进行更新,还有一个是runOnUIThread也是可以进行更新的。但这些本质上还是通过Handler进行子线程的更新。
6、你知道HandlerThread是什么吗?
    答:HandlerThread是Android官方给我们提供好的一套子线程的Handler,也就是异步处理机制,它是为了避免线程切换导致空指针异常的错误。
    当然进入职场并不止是清楚这些就可以了,要想在工作中脱颖而出,加入老鸟的行列,专业技能水平一定要过硬,汇道科技:以商业实战项目进行培训与练习,JAVA课程中所有的实践开发项目均来自天瑞地安科技集团合作企业,真实的项目、真实的环境、真实的职场。大型的实训项目锻造出企业需求的实战型学员。

使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表