天天看点

day 21-22 面试题:ButterKnife面试题,git面试题

1. 为什么要用ButterKnife
2. ButterKnife原理
           

1. 为什么要用ButterKnife

  1. 使用注解代替findViewById和事件绑定,简化代码,节省开发时间
  2. 能够方便的处理Adapter中的ViewHolder绑定的问题
  3. 使用过程中不会影响app的运行效率和性能(编译时注解)
  4. 代码更清晰,可读性更强

2. ButterKnife原理

实现原理

ButterKnife的原理就是利用注解和注解处理器针对每个Activity生成一个相对应的类,将原本需要手动编写的findViewById的view绑定代码和点击事件监听及资源id的绑定逻辑,利用注解处理器自动生成代码。

ButterKnife的实现步骤:

  1. 定义注解
  2. 编写注解处理器(Java项目)
    1. 扫描所有的ButterKnife注解
    2. 根据文件将注解分开
    3. 生成辅助类文件,调用findViewById方法,绑定View
  3. 在app中使用注解,并绑定当前的Activity即可使用

3. git

此文非git的面试题,主要写一下TortoiseGit的操作。具体的Git分支管理策略普通开发人员用不到,此处不表。

git基本命令

3.1 集中式vs分布式

  1. 集中式版本控制系统

    版本库是集中存放在中央服务器的,干活的时候都是用的自己的电脑,所以要先从中央服务器获取最新版本,然后干活,代码写完之后再将相应代码提交到中央服务器。必须联网才能够clone和push。

  2. 分布式版本控制系统

    个人电脑也可以有一个完整的版本库,每个人在各自的电脑上编写代码,提交到本地的版本库,然后同步到服务器,其他用户也是一样,在本地工作,不断给服务器交换最新修改。

3.2 TortoiseGit的安装

命令行之前写过一次,本次不写,只写图形化的一些操作。
  1. 首先准备两个安装包,git的安装程序和TortoiseGit的安装程序
    day 21-22 面试题:ButterKnife面试题,git面试题
  2. 先安装git的安装程序,一路下一步即可,安装完成后,所有程序中能看到Git文件夹,右键能看到Git_bash_here的菜单
    day 21-22 面试题:ButterKnife面试题,git面试题
  3. 安装TortoiseGit,一路下一步即可,安装完成后,右键能看到如下的菜单
    day 21-22 面试题:ButterKnife面试题,git面试题
  4. TortoiseGit设置用户名和邮箱

    右键->TortoiseGit->Settings->Git,右侧就能看到User Info,填写下用户名和邮箱即可。

    day 21-22 面试题:ButterKnife面试题,git面试题

3.3 TortoiseGit的使用

Git和SVN功能类似,clone,push,pull等功能基本没有区别,Git的强大之处主要在于分支的操作

开发者在本地建立自己的分支,编写提交代码,在未push到远端时都不会影响项目代码,而本地也可以维护一个分支,有自己的提交记录,开发完成后再合并到主分支,push到远端即可

  1. Git clone

    右键->TortoiseGit->Git clone,填入服务器地址即可拉取远端代码

    day 21-22 面试题:ButterKnife面试题,git面试题
  2. 新建分支(本地)

    右键->TortoiseGit->Create Branch

    day 21-22 面试题:ButterKnife面试题,git面试题
    输入新分支名字,确定即可创建新的分支
    day 21-22 面试题:ButterKnife面试题,git面试题
  3. 本地开发,提交到本地

    右键->Git Commit(后会跟当前分支名)

  4. 切换分支

    右键->TortoiseGit->Switch/Checkout

    day 21-22 面试题:ButterKnife面试题,git面试题
    选中本地的主分支,然后确定即可切换到主分支
    day 21-22 面试题:ButterKnife面试题,git面试题
  5. 合并分支

    右键->TortoiseGit->Merge

    day 21-22 面试题:ButterKnife面试题,git面试题
    选择需要合并到主分支上的分支名称,确定
    day 21-22 面试题:ButterKnife面试题,git面试题
  6. push
    将本地合并完的内容push到远端对应的分支
    右键->TortoiseGit->push
day 21-22 面试题:ButterKnife面试题,git面试题
push上去之后,showLog即可看到对应的日志,从分支的提交记录能看到先提交到NewBranch然后和Master合并的
           
day 21-22 面试题:ButterKnife面试题,git面试题
  1. show Log

    右键->TortoiseGit->show Log,这样就能看到当前分支的提交记录

  2. 删除分支

    前半部分和切换分支一样

    右键->TortoiseGit->Switch/Checkout

    分支名字后面,点击打开分支引用,在分支上右键,即可重命名和删除分支

day 21-22 面试题:ButterKnife面试题,git面试题
  1. 更新版本库
    从安全的角度说,提倡Fetch然后Merge

    pull(拉取):从远程拉取最新代码并合并到本地库

    Fetch(获取):从远程拉取最新代码到本地,并不会Merge

  2. 比较文件差异

    选中文件,右键TortoiseGit->diff,可以看到当前这个文件本次修改了哪些内容。

  3. Git冲突解决
    冲突是避免不了的
    做到以下几步能避免大部分Git冲突
    1. 明确的代码提交规范
    2. 及时获取新版本代码
    3. 修改后及时提交
    Git冲突:
    1. 两个人同时修改同一个文件名,其中一个人提交后,另一个获取后再使用(商定好文件名)
    2. 内容冲突,拉取逻辑后,解决冲突后再提交

继续阅读