首页 > 编程知识 正文

华为软通动力招聘 待遇,软通动力华为项目组主要做什么?

时间:2023-05-03 15:56:02 阅读:200443 作者:3911

软通动力-->华为项目0508-->安卓开发工程师

面试时间:2019年5月8日

岗位:安卓开发工程师

深圳/3-5年/本科/13-25K

岗位简述:

1、熟练掌握Java/Android SDK的使用; 从事华为钱包客户端+NFC客户端的研发工作,可实现银行卡管理,手机支付,NFC支付,公交卡等功能。
2、熟练掌握Android的基本类库、界面设计、数据存储,以及主流设备的适配; 
3、熟练掌握Android系统 活动、服务、线程、进程的通信机制;
4、有一年以上工作经验;

面试总结

一 Android SDK

二 Android基本类库

android.util 涉及系统底层的辅助类库

  android.os 提供了系统服务、消息传输、IPC管道

  android.graphics GPhone图形库,包含了文本显示、输入输出、文字样式

  android.database 包含底层的API操作数据库(SQLite)

  android.content 提供了各种数据传输、服务、资源管理

  android.view 提供基础的用户界面接口框架

  android.widget 显示各种控件如按钮、列表框、进度条等。

  android.app 提供高层的程序模型、提供基本的运行环境

  android.provider 各种定义变量标准

  android.telephony 提供与拨打电话相关的API交互

  android.webkit GPhone默认浏览器操作接口

三 数据存储

Android 数据持久化==存储数据的五种方法

https://www.jianshu.com/p/b64ca52d5d41

Android提供的数据存储方式有SharedPreferences, 文件保存,SQLite数据库保存,网络保存和内容提供器

1.SharedPreferences

SharedPreferences是基于XML格式的文件存储key-value格式的数据,数据类型包括字符串,基本数据类型以及序列化的对象

适用于存储一些配置消息.

通过Context调用getSharedPreferences()方法获取SharedPreferences方法获取SharedPreferences对象,再用edit()方法获取Editor对象,对数据进行保存,删除等操作.当editor编辑完成后commit()提交修改

1.1对象序列化方式

1.2多线程多修改数据

 

2.文件保存

使用Context调用getFileInputStream()获取输入流,调用getFileOutputStream()获取输出流进行读写

3.SQLite

当要插入多条数据的时候,使用for+insert会导致插入一条数据就进行一次磁盘读写,性能低下.如果使用事务就能批量插入数据

使用beginTransaction()开启事务, 使用endTransaction()结束事务, 在调用endStransaction()前, 如果调用了setTransactionSuccessful(), 设置事务操作成功的标记则提交事务, 如果没有则事务回滚

4.ContentProvider

 

四 设备适配

目前Android最全面、最易懂的Android屏幕适配解决方案

https://blog.csdn.net/xxf377376701/article/details/78925646

五 进程间通信

进程间的五种通信方式介绍

https://blog.csdn.net/wh_sjc/article/details/70283843

5.1管道(无名管道)特点

1)管道的数据只能在一个方向上流动

2)管道只能用于父子进程以及兄弟进程间的通信

3)管道是一种特殊的文件,存在于内存中

当管道建立的时候, 会创建两个文件描述符, fd[0]表示为读打开, fd[1]表示为写打开. 比如父进程保留fd[1], 子进程保留fd[0], 数据就会从父进程流向子进程.反之数据会从子进程流向父进程

5.2 

 

(二) 中软

一 简述四大组件

Activity是Android程序与用户交互的窗口

Service没有界面,在后台完成用户指定的操作(如,音乐播放,下载,复杂计算等)

BroadcastReceiver对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入,开机时等)进行接收并做出响应

ContentProvider主要用于在不同的应用程序之间实现数据共享的功能

二 UI界面

三 多线程

答:Android中的耗时操作不能再在UI线程执行,不然会导致线程阻塞, 所以就需要多线程的操作,常用的多线程操作包括handler,asyncTask, IntentServer

3.1Handler机制

1)在主线程创建一个handler对象,并复写handleMessage()方法;

2)创建runnable线程,执行耗时操作. 开启一个线程就会开启一个looper, looper初始化的时候会创建一MessageQueue

3)执行完耗时操作,通过handler把消息发送到消息队列中, looper轮询消息队列把消息取出来交给handler处理

4)在一个线程中可以创建多个handler,但是会通用一个MessageQueue, 处理消息的handler只能是发送消息的那个handler

3.2AsyncTask

在UI线程创建AsyncTask实例调用execute()函数. execute方法会调用onPreExecute()方法, 然后由ThreadPoolExecutor实例执行一个任务,这个过程中doInBackground()将被调用执行耗时操作.

如果在doInBackground()调用了publishProgress(), 则InternalHandler实例发送更新进度的消息, 处理消息的时候会调用onProgressUpdate()方法, 让用户在UI线程更新进度

如果遇到异常,InternalHandler实例发送异常消息, 处理消息的时候会调用onCancelled()方法

如果执行成功, InternalHandler实例发送执行成功消息, 处理消息的时候会调用onPostExecute()方法,让用户在UI线程处理结果

3.3IntentService

IntentService在onCreate()方法中单独开启一个线程执行耗时操作, 通过onHandlerIntent()方法执行耗时操作,耗时操作执行完后会自动关闭service

四 socket通信 HTTP网络请求

4.1TCP/IP是传输层协议, HTTP是应用层协议.

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,  应用层和传输层通过Socket接口, 区分来自不同应用程序进程或网络连接的通信, 实现数据传输和并发服务

4.2 Socket连接

socket连接包括客户端socket和服务端socket. 服务端套接字处于等待连接状态,并不定位具体的客户端套接字; 客户端套接字描述服务端的地址和端口,向服务端发送连接请求; 服务端套接字响应请求, 建立一个线程把服务端的描述发给客户端,一旦客户端确认描述,双方就正式建立连接,然后服务端继续处于监听状态, 等待其他客户端套接字的请求

4.3 Socket连接与HTTP连接

创建Socket连接时, 如果指定使用TCP协议进行连接, 该Socket连接就是一个TCP连接。

如果服务器与客户端是Socket连接, 服务器可以直接向客户端推送消息; 如果服务器与客户端是Http连接, 服务器必须等客户端发送请求后才将数据传给客户端

五 广播常用加减密

六 性能优化

七 内存优化

八 设计模式

九 AS开发环境

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。