精华内容
下载资源
问答
  • adb命令大全

    千次阅读 多人点赞 2019-06-03 22:19:07
    ADB 操作命令详解及用法大全、ADB是什么?二、ADB有什么作用?三、ADB命令语法单一设备/模拟器连接多个设备/模拟器连接四、ADB常用命令4.1 基本命令4.1.1 查看adb的版本信息4.1.2 启动adb4.1.3 停止adb4.1.4 以 ...

    ADB 操作命令详解及用法大全

    一、ADB是什么?

    ADB,即 Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在Android SDK/platform-tools中找到 adb 工具或下载 ADB Kits

    二、ADB有什么作用?

    ADB 是 Android SDK 里的一个工具, 用这个工具可以直接操作管理Android模拟器或者真实的Android设备。它的主要功能有:

    • 在设备上运行Shell命令; 将本地APK软件安装至模拟器或Android设备;
    • 管理设备或手机模拟器上的预定端口;
    • 在设备或手机模拟器上复制或粘贴文件。

    ADB 是一个客户端-服务器程序程序,包括三个组件:

    • 客户端:该组件发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
    • 后台程序:该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。
    • 服务器:该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。

    三、ADB命令语法

    adb 命令的基本语法如下:

    adb [-d|-e|-s <serial-number>] <command>
    
     
      参数含义
      -d指定当前唯一通过 USB 连接的 Android 设备为命令目标
      -e指定当前唯一运行的模拟器为命令目标
      -s<serial-number> 指定相应设备序列号的设备/模拟器为命令目标

      在多个设备/模拟器连接的情况下较常用的是 -s <serial-number> 参数,serial-number是指设备的设备序列号,可以通过 adb devices 命令获取。

      四、ADB常用命令

      4.1 基本命令

      4.1.1 查看adb的版本信息

      adb version
      
       
        参数显示列表
        所有应用
        -f显示应用关联的 apk 文件
        -d只显示 disabled 的应用
        -e只显示 enabled 的应用
        -s只显示系统应用
        -3只显示第三方应用
        -i显示应用的 installer
        -u包含已卸载应用
        <filter>包名包含 <filter> 字符串

        4.3.1.1 查看所有应用

        adb shell pm list packages
        
         
          参数含义
          -l将应用安装到保护目录 /mnt/asec
          -r允许覆盖安装
          -t允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用
          -s将应用安装到 sdcard
          -d允许降级覆盖安装
          -g授予所有运行时权限

          运行命令后可以看到输出内容,包含安装进度和状态,安装状态如下:

          • Success:代表安装成功。
          • Failure:代表安装失败。APK 安装失败的情况有很多,Failure状态之后有安装失败输出代码。常见安装失败输出代码、含义及可能的解决办法如下:
          输出代码含义解决办法
          INSTALL_FAILED_ALREADY_EXISTS应用已经存在,或卸载了但没卸载干净adb install 时使用 -r 参数,或者先 adb uninstall 再安装
          INSTALL_FAILED_INVALID_APK无效的 APK 文件
          INSTALL_FAILED_INVALID_URI无效的 APK 文件名确保 APK 文件名里无中文
          INSTALL_FAILED_INSUFFICIENT_STORAGE空间不足清理空间
          INSTALL_FAILED_DUPLICATE_PACKAGE已经存在同名程序
          INSTALL_FAILED_NO_SHARED_USER请求的共享用户不存在
          INSTALL_FAILED_UPDATE_INCOMPATIBLE以前安装过同名应用,但卸载时数据没有移除;或者已安装该应用,但签名不一致先 adb uninstall 再安装
          INSTALL_FAILED_SHARED_USER_INCOMPATIBLE请求的共享用户存在但签名不一致
          INSTALL_FAILED_MISSING_SHARED_LIBRARY安装包使用了设备上不可用的共享库
          INSTALL_FAILED_REPLACE_COULDNT_DELETE替换时无法删除
          INSTALL_FAILED_DEXOPTdex 优化验证失败或空间不足
          INSTALL_FAILED_OLDER_SDK设备系统版本低于应用要求
          INSTALL_FAILED_CONFLICTING_PROVIDER设备里已经存在与应用里同名的 content provider
          INSTALL_FAILED_NEWER_SDK设备系统版本高于应用要求
          INSTALL_FAILED_TEST_ONLY应用是 test-only 的,但安装时没有指定 -t 参数
          INSTALL_FAILED_CPU_ABI_INCOMPATIBLE包含不兼容设备 CPU 应用程序二进制接口的 native code
          INSTALL_FAILED_MISSING_FEATURE应用使用了设备不可用的功能
          INSTALL_FAILED_CONTAINER_ERROR1. sdcard 访问失败;2. 应用签名与 ROM 签名一致,被当作内置应用。1. 确认 sdcard 可用,或者安装到内置存储;2. 打包时不与 ROM 使用相同签名。
          INSTALL_FAILED_INVALID_INSTALL_LOCATION1. 不能安装到指定位置;2. 应用签名与 ROM 签名一致,被当作内置应用。1. 切换安装位置,添加或删除 -s 参数;2. 打包时不与 ROM 使用相同签名。
          INSTALL_FAILED_MEDIA_UNAVAILABLE安装位置不可用一般为 sdcard,确认 sdcard 可用或安装到内置存储
          INSTALL_FAILED_VERIFICATION_TIMEOUT验证安装包超时
          INSTALL_FAILED_VERIFICATION_FAILURE验证安装包失败
          INSTALL_FAILED_PACKAGE_CHANGED应用与调用程序期望的不一致
          INSTALL_FAILED_UID_CHANGED以前安装过该应用,与本次分配的 UID 不一致清除以前安装过的残留文件
          INSTALL_FAILED_VERSION_DOWNGRADE已经安装了该应用更高版本使用 -d 参数
          INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE已安装 target SDK 支持运行时权限的同名应用,要安装的版本不支持运行时权限
          INSTALL_PARSE_FAILED_NOT_APK指定路径不是文件,或不是以 .apk 结尾
          INSTALL_PARSE_FAILED_BAD_MANIFEST无法解析的 AndroidManifest.xml 文件
          INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION解析器遇到异常
          INSTALL_PARSE_FAILED_NO_CERTIFICATES安装包没有签名
          INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES已安装该应用,且签名与 APK 文件不一致先卸载设备上的该应用,再安装
          INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING解析 APK 文件时遇到 CertificateEncodingException
          INSTALL_PARSE_FAILED_BAD_PACKAGE_NAMEmanifest 文件里没有或者使用了无效的包名
          INSTALL_PARSE_FAILED_BAD_SHARED_USER_IDmanifest 文件里指定了无效的共享用户 ID
          INSTALL_PARSE_FAILED_MANIFEST_MALFORMED解析 manifest 文件时遇到结构性错误
          INSTALL_PARSE_FAILED_MANIFEST_EMPTY在 manifest 文件里找不到找可操作标签(instrumentation 或 application)
          INSTALL_FAILED_INTERNAL_ERROR因系统问题安装失败
          INSTALL_FAILED_USER_RESTRICTED用户被限制安装应用
          INSTALL_FAILED_DUPLICATE_PERMISSION应用尝试定义一个已经存在的权限名称
          INSTALL_FAILED_NO_MATCHING_ABIS应用包含设备的应用程序二进制接口不支持的 native code
          INSTALL_CANCELED_BY_USER应用安装需要在设备上确认,但未操作设备或点了取消在设备上同意安装
          INSTALL_FAILED_ACWF_INCOMPATIBLE应用程序与设备不兼容
          INSTALL_FAILED_TEST_ONLYAPK 文件是使用 Android Studio 直接 RUN 编译出来的文件通过 Gradle 的 assembleDebug 或 assembleRelease 重新编译,或者 Generate Signed APK
          does not contain AndroidManifest.xml无效的 APK 文件
          is not a valid zip file无效的 APK 文件
          Offline设备未连接成功先将设备与 adb 连接成功
          unauthorized设备未授权允许调试
          error: device not found没有连接成功的设备先将设备与 adb 连接成功
          protocol failure设备已断开连接先将设备与 adb 连接成功
          Unknown option: -sAndroid 2.2 以下不支持安装到 sdcard不使用 -s 参数
          No space left on device空间不足清理空间
          Permission denied … sdcard …sdcard 不可用
          signatures do not match the previously installed version; ignoring!已安装该应用且签名不一致先卸载设备上的该应用,再安装

          参考:PackageManager.java
          adb install 实际是分三步完成:

          1. push apk 文件到 /data/local/tmp
          2. 调用 pm install 安装。
          3. 删除 /data/local/tmp 下的对应 apk 文件。

          4.3.3 卸载应用

          卸载应用的基本命令格式是:

          adb uninstall [-k] <package-name>
          
           
          • 1

          <package-name> 表示应用的包名,-k 参数可选,表示卸载应用但保留数据和缓存目录。

          4.3.4 清除应用数据与缓存

          adb shell pm clear <package-name>
          
           
          • 1

          <package-name> 表示应用名包,这条命令的效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。

          4.3.5 查看前台 Activity

          adb shell dumpsys activity activities | grep mFocusedActivity
          
           
          • 1

          4.3.6 查看正在运行的 Services

          adb shell dumpsys activity services [<package-name>]
          
           
          • 1

          <package-name> 参数不是必须的,指定 <package-name> 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。<package-name> 不一定要给出完整的包名,可以只给一部分,那么所给包名相关的 Services 都会列出来。

          4.3.7 查看应用详细信息

          adb shell dumpsys package <package-name>
          
           
          • 1

          <package-name> 表示应用包名。运行次命令的输出中包含很多信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。

          4.3.7 查看应用安装路径

          adb shell pm path <package-name>
          
           
          • 1

          4.4 与应用交互

          与应用交互主要是使用 am <command> 命令,常用的 <command> 如下:

          command用途
          start [options] <intent>启动 <intent> 指定的 Activity
          startservice [options] <intent>启动 <intent> 指定的 Service
          broadcast [options] <intent>发送 <intent> 指定的广播
          force-stop <package-name>停止 <package-name> 相关的进程

          <intent> 参数很灵活,和写 Android 程序时代码里的 Intent 相对应。
          用于决定 intent 对象的选项如下:

          参数含义
          -a <action>指定 action,比如 android.intent.action.VIEW
          -c <category>指定 category,比如 android.intent.category.APP_CONTACTS
          -n <component>指定完整 component 名,用于明确指定启动哪个 Activity

          <intent> 里还能带数据,就像写代码时的 Bundle 一样:

          参数含义
          --esn <extra-key>null 值(只有 key 名)
          -e|--es <extra-key> <extra-string-value>string 值
          --ez <extra-key> <extra-boolean-value>boolean 值
          --ei <extra-key> <extra-int-value>integer 值
          --el <extra-key> <extra-long-value>long 值
          --ef <extra-key> <extra-float-value>float 值
          --eu <extra-key> <extra-uri-value>URI
          --ecn <extra-key> <extra-component-name-value>component name
          --eia <extra-key> <extra-int-value>[,<extra-int-value...]integer 数组
          --ela <extra-key> <extra-long-value>[,<extra-long-value...]long 数组

          4.4.1 启动应用/ 调起 Activity

          adb shell am start [options] <intent>
          
           
          • 1

          例如:

          adb shell am start -a android.settings.SETTINGS                   # 打开系统设置页面
          adb shell am start -a android.intent.action.DIAL -d tel:10086     # 打开拨号页面
          adb shell am start -n com.android.mms/.ui.ConversationList        # 打开短信会话列表
          
           
          • 1
          • 2
          • 3

          options 是一些改变其行为的选项,支持的可选参数及含义如下:

          选项含义
          -D启用调试
          -W等待启动完成
          –start-profiler file启动分析器并将结果发送到 file
          -P file类似于 --start-profiler,但当应用进入空闲状态时分析停止
          -R count重复 Activity 启动次数
          -S启动 Activity 前强行停止目标应用
          –opengl-trace启用 OpenGL 函数的跟踪
          –user user_idcurrent

          4.4.2 调起 Service

          adb shell am startservice [options] <intent>
          
           
          • 1

          一个典型的用例是如果设备上原本应该显示虚拟按键但是没有显示,可以试试这个:

          adb shell am startservice -n com.android.systemui/.SystemUIService
          
           
          • 1

          4.4.3 停止 Service

          adb shell am stopservice [options] <intent>
          
           
          • 1

          4.4.4 发送广播

          adb shell am broadcast [options] <INTENT>
          
           
          • 1

          可以向所有组件广播,也可以只向指定组件广播。
          例如,向所有组件广播 BOOT_COMPLETED

          adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
          
           
          • 1

          又例如,只向 com.android.receiver.test/.BootCompletedReceiver 广播 BOOT_COMPLETED

          adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.android.receiver.test/.BootCompletedReceiver
          
           
          • 1

          这类用法在测试的时候很实用,比如某个广播的场景很难制造,可以考虑通过这种方式来发送广播。
          既能发送系统预定义的广播,也能发送自定义广播。如下是部分系统预定义广播及正常触发时机:

          action触发时机
          android.net.conn.CONNECTIVITY_CHANGE网络连接发生变化
          android.intent.action.SCREEN_ON屏幕点亮
          android.intent.action.SCREEN_OFF屏幕熄灭
          android.intent.action.BATTERY_LOW电量低,会弹出电量低提示框
          android.intent.action.BATTERY_OKAY电量恢复了
          android.intent.action.BOOT_COMPLETED设备启动完毕
          android.intent.action.DEVICE_STORAGE_LOW存储空间过低
          android.intent.action.DEVICE_STORAGE_OK存储空间恢复
          android.intent.action.PACKAGE_ADDED安装了新的应用
          android.net.wifi.STATE_CHANGEWiFi连接状态发生变化
          android.net.wifi.WIFI_STATE_CHANGEDWiFi状态变为启用/关闭/正在启动/正在关闭/未知
          android.intent.action.BATTERY_CHANGED电池电量发生变化
          android.intent.action.INPUT_METHOD_CHANGED系统输入法发生变化
          android.intent.action.ACTION_POWER_CONNECTED外部电源连接
          android.intent.action.ACTION_POWER_DISCONNECTED外部电源断开连接
          android.intent.action.DREAMING_STARTED系统开始休眠
          android.intent.action.DREAMING_STOPPED系统停止休眠
          android.intent.action.WALLPAPER_CHANGED壁纸发生变化
          android.intent.action.HEADSET_PLUG插入耳机
          android.intent.action.MEDIA_UNMOUNTED卸载外部介质
          android.intent.action.MEDIA_MOUNTED挂载外部介质
          android.os.action.POWER_SAVE_MODE_CHANGED省电模式开启

          (以上广播均可使用 adb 触发)

          4.4.5 强制停止应用

          adb shell am force-stop <packagename>
          
           
          • 1

          4.4.6 收紧内存

          adb shell am send-trim-memory  <pid> <level>
          
           
          • 1

          参数说明:

          • pid: 进程 ID
          • level:HIDDEN、RUNNING_MODERATE、BACKGROUND、RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE

          4.5 文件管理

          4.5.1 从模拟器/设备下载指定的文件到计算机

          从模拟器/设备下载指定的文件到计算机的基本命令格式是:

          adb pull <remote> [local]
          
           
          • 1

          参数说明:

          • remote: 模拟器/设备里的文件路径
          • local:计算机上的目录,参数可以省略,默认复制到当前目录

          例如,将 /sdcard/music.mp4 下载到计算机的当前目录:

          adb pull /sdcard/music.mp4
          
           
          • 1

          /sdcard/music.mp4 下载到计算机的当前目录(目录需存在):

          adb pull /sdcard/music.mp4 D:\Download

          4.5.2 将指定的文件从计算机上传到模拟器/设备

          将指定的文件从计算机上传到模拟器/设备的基本命令格式是:

          adb push <local> <remote>
          
           
          • 1

          参数说明:

          • local:计算机上的文件路径
          • remote: 模拟器/设备里的目录

          例如,将 D:\Download\music.mp4 下载到设备的/sdcard/music/目录:

          adb push D:\Download\music.mp4 /sdcard/music/
          
           
          • 1

          4.5.4 列出指定目录的内容

          列出模拟器/设备上指定目录的内容的基本命令格式是:

          adb shell ls [options] <directory>
          
           
          • 1

          <directory> 表示指定目录,可以省略,表示列出根目录下的所有文件和目录。
          adb shell ls 后面可以跟一些可选参数进行过滤查看不同的列表,可用参数及含义如下:

          参数显示列表
          列出目录下的所有文件和目录
          -a列出目录下的所有文件(包括隐藏的)
          -i列出目录下的所有文件和索引编号
          -s列出目录下的所有文件和文件大小
          -n列出目录下的所有文件及其 UID和 GID
          -R列出目录下的所有子目录中的文件

          4.5.5 切换到目标目录

          adb shell cd <directory>
          
           
          • 1

          第一步:执行adb shell命令;
          第二步:执行cd <directory>命令切换到目标目录。

          4.5.6 删除文件或目录

          adb shell rm [options] <files or directory>
          
           
          • 1

          第一步:执行adb shell命令;
          第二步:执行rm [options] <files or directory>命令删除文件或目录。
          rm 后面可以跟一些可选参数进行不同的操作,可用参数及含义如下:

          参数含义
          删除文件
          -f强制删除文件,系统不提示
          -r强制删除指定目录中的所有文件和子目录
          -d删除指定目录,即使它是一个非空目录
          -i交互式删除,删除前提示

          rm -d 等同于 rmdir 命令,有些版本不包含-d 参数。

          4.5.7 创建目录

          adb shell mkdir [options] <directory-name>
          
           
          • 1

          第一步:执行adb shell命令;
          第二步:执行mkdir [options] <directory-name>命令创建目录。
          mkdir 后面可以跟一些可选参数进行不同的操作,可用参数及含义如下:

          参数含义
          创建指定目录
          -m创建指定目录并赋予读写权限
          -p创建指定目录及其父目录

          4.5.8 创建空文件或改变文件时间戳

          adb shell touch [options] <file>
          
           
          • 1

          第一步:执行adb shell命令;
          第二步:执行touch [options] <file>命令创建空文件或改变文件时间戳。
          可通过ls -n <directory> 命令查看文件的时间。

          4.5.9 输出当前目录路径

          adb shell pwd
          
           
          • 1

          第一步:执行adb shell命令;
          第二步:执行pwd命令输出当前目录路径。

          4.5.10 复制文件和目录

          adb shell cp [options] <source> <dest>
          
           
          • 1

          第一步:执行adb shell命令;
          第二步:执行cp [options] <source> <dest>命令复制文件和目录。
          参数说明:

          • source:源文件路径
          • dest: 目标文件路径

          4.5.11 移动或重命名文件

          adb shell mv [options] <source> <dest>
          
           
          • 1

          第一步:执行adb shell命令;
          第二步:执行mv [options] <source> <dest>命令移动或重命名文件。
          参数说明:

          • source:源文件路径
          • dest: 目标文件路径

          4.6 网络管理

          4.6.1 查看网络统计信息

          adb shell netstat
          
           
          • 1

          也可以将网络统计信息输出到指定文件:

          adb shell netstat><file-path>
          
           
          • 1

          例如,可以通过 adb shell netstat>D:\netstat.log 将日志输出到 D:\netstat.log 中。

          4.6.2 测试两个网络间的连接和延迟

          ping 命令的格式如下:

          adb shell ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
          [-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
          [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
          [-w deadline] [-W timeout] [hop1 ...] destination
          
           
          • 1
          • 2
          • 3
          • 4

          例如,ping一个域名:

          adb shell ping www.google.com
          
           
          • 1

          不结束的话会一直ping下去,可以按 Ctrl + C 停止ping操作。
          也可以指定ping的次数:

          adb shell ping -c 4 www.google.com
          
           
          • 1

          4.6.3 通过配置文件配置和管理网络连接

          netcfg 命令的格式如下:

          adb shell netcfg [<interface> {dhcp|up|down}]
          
           
          • 1

          输出示例:

          rmnet_ims10 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_ims00 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_tun04 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_tun03 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_tun02 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_tun01 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_tun00 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_tun14 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_tun13 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_tun12 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_tun11 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_tun10 DOWN                                   0.0.0.0/0   0x00001002
          rmnet1   DOWN                                   0.0.0.0/0   0x00001002
          rmnet0   DOWN                                   0.0.0.0/0   0x00001002
          rmnet4   DOWN                                   0.0.0.0/0   0x00001002
          rmnet3   DOWN                                   0.0.0.0/0   0x00001002
          rmnet2   DOWN                                   0.0.0.0/0   0x00001002
          rmnet6   DOWN                                   0.0.0.0/0   0x00001002
          rmnet5   DOWN                                   0.0.0.0/0   0x00001002
          dummy0   UP                                     0.0.0.0/0   0x000000c3
          rmnet_r_ims10 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_r_ims00 DOWN                                   0.0.0.0/0   0x00001002
          rmnet_emc0 DOWN                                   0.0.0.0/0   0x00001002
          lo       UP                                   127.0.0.1/8   0x00000049
          sit0     DOWN                                   0.0.0.0/0   0x00000080
          wlan0    UP                                 10.0.38.176/23  0x00001043
          
           
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26

          4.6.4 显示、操作路由、设备、策略路由和隧道

          ip 命令的格式如下:

          adb shell ip [ options ] object
          
           
          • 1
          • options := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve]
            |-f[amily] { inet | inet6 | ipx | dnet | link } |-l[oops] {
            maximum-addr-flush-attempts } |-o[neline] | -t[imestamp] | -b[atch]
            [filename] |-rc[vbuf] [size]}

          • object := { link | addr | addrlabel | route | rule | neigh | ntable
            |tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |netns |
            l2tp }

          options 是一些修改ip行为或者改变其输出的选项。所有的选项都是以-字符开头,分为长、短两种形式,支持的可选参数及含义如下:

          选项含义
          -V,-Version打印ip的版本并退出
          -s,-stats,-statistics输出更为详尽的信息(如果这个选项出现两次或者多次,输出的信息将更为详尽)
          -f,-family强调使用的协议种类(包括:inet、inet6或者link)
          -4是-family inet的简写
          -6是-family inet6的简写
          -0是-family link的简写
          -o,-oneline对每行记录都使用单行输出,回行用字符代替
          -r,-resolve查询域名解析系统,用获得的主机名代替主机IP地址

          object 是你要管理或者获取信息的对象。目前ip认识的对象包括:

          参数显示列表
          link网络设备
          address一个设备的协议(IP或者IPV6)地址
          neighbourARP或者NDISC缓冲区条目
          route路由表条目
          rule路由策略数据库中的规则
          maddress多播地址
          mroute多播路由缓冲区条目
          tuntap管理 TUN/TAP 设备
          netns管理网络空间

          例如,查看 WiFi IP 地址:

          adb shell ip -f inet addr show wlan0
          
           
          • 1

          4.7 模拟按键/输入

          adb shell 里有个很实用的命令叫 input,通过它可以做一些有趣的事情。
          可以执行adb shell input命令查看完整 help 信息如下:

          Usage: input [<source>] <command> [<arg>...]
          

          The sources are:
          dpad
          keyboard
          mouse
          touchpad
          gamepad
          touchnavigation
          joystick
          touchscreen
          stylus
          trackball

          The commands and default sources are:

          text <string> (Default: touchscreen)
          keyevent [–longpress] <key code number or name> … (Default: keyboard)
          tap <x> <y> (Default: touchscreen)
          swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
          draganddrop <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
          press (Default: trackball)
          roll <dx> <dy> (Default: trackball)

          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23

          比如使用 adb shell input keyevent <keycode> 命令,不同的 keycode 能实现不同的功能,完整的 keycode 列表详见 KeyEvent,摘引部分我觉得有意思的如下:

          keycode含义
          3HOME 键
          4返回键
          5打开拨号应用
          6挂断电话
          24增加音量
          25降低音量
          26电源键
          27拍照(需要在相机应用里)
          64打开浏览器
          82菜单键
          85播放/暂停
          86停止播放
          87播放下一首
          88播放上一首
          122移动光标到行首或列表顶部
          123移动光标到行末或列表底部
          126恢复播放
          127暂停播放
          164静音
          176打开系统设置
          187切换应用
          207打开联系人
          208打开日历
          209打开音乐
          210打开计算器
          220降低屏幕亮度
          221提高屏幕亮度
          223系统休眠
          224点亮屏幕
          231打开语音助手
          276如果没有 wakelock 则让系统休眠

          下面是 input 命令的一些用法举例。

          4.7.1 电源键

          adb shell input keyevent 26
          
           
          • 1

          执行效果相当于按电源键。

          4.7.2 菜单键

          adb shell input keyevent 82
          
           
          • 1

          4.7.3 HOME 键

          adb shell input keyevent 3
          
           
          • 1

          4.7.4 返回键

          adb shell input keyevent 4
          
           
          • 1

          4.7.5 音量控制

          增加音量:

          adb shell input keyevent 24
          
           
          • 1

          降低音量:

          adb shell input keyevent 25
          
           
          • 1

          静音:

          adb shell input keyevent 164
          
           
          • 1

          4.7.6 媒体控制

          播放/暂停:

          adb shell input keyevent 85
          
           
          • 1

          停止播放:

          adb shell input keyevent 86
          
           
          • 1

          播放下一首:

          adb shell input keyevent 87
          
           
          • 1

          播放上一首:

          adb shell input keyevent 88
          
           
          • 1

          恢复播放:

          adb shell input keyevent 126
          
           
          • 1

          暂停播放:

          adb shell input keyevent 127
          
           
          • 1

          4.7.7 点亮/熄灭屏幕

          点亮屏幕:

          adb shell input keyevent 224
          
           
          • 1

          熄灭屏幕:

          adb shell input keyevent 223
          
           
          • 1

          4.7.8 滑动解锁

          如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 input swipe 来解锁。
          命令(参数以机型 Nexus 5,向上滑动手势解锁举例):

          adb shell input swipe 300 1000 300 500
          
           
          • 1

          参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标。

          4.7.9 输入文本

          在焦点处于某文本框时,可以通过 input 命令来输入文本。

          adb shell input text hello
          
           
          • 1

          4.8 日志打印

          Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。

          4.8.1 Android 日志

          查看 Android 设备系统属性的基本命令格式是:

          adb logcat [option] [filter-specs]
          
           
          • 1

          如果需要停止 logcat 日志打印,可以按 Ctrl + C 停止日志监控。

          4.8.1.1 按级别过滤日志

          按级别过滤日志的基本命令格式是:

          adb logcat [filter-specs]
          
           
          • 1

          Android 的日志分为如下几个优先级(priority):

          级别含义
          *:V过滤只显示 Verbose 及以上级别(优先级最低)
          *:D过滤只显示 Debug 及以上级别
          *:I过滤只显示 Info 及以上级别
          *:W过滤只显示 Warning 及以上级别
          *:E过滤只显示 Error 及以上级别
          *:F过滤只显示 Fatal 及以上级别
          *:S过滤只显示 Silent 及以上级别(优先级最高,什么也不输出)

          按某级别过滤日志则会将该级别及以上的日志输出。
          比如,命令:

          adb logcat *:W
          
           
          • 1

          会将 Warning、Error、Fatal 和 Silent 日志输出。
          (注: 在 macOS 下需要给 *:W 这样以 * 作为 tag 的参数加双引号,如 adb logcat "*:W",不然会报错 no matches found: *:W。)

          4.8.1.2 按 tag 和级别过滤日志

          按 tag 和级别过滤日志的基本命令格式是:

          adb logcat [tag:level] [tag:level] ...
          
           
          • 1

          比如,命令:

          adb logcat ActivityManager:I MyApp:D *:S
          
           
          • 1

          表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。

          4.8.1.3 将日志格式化输出

          可以用 adb logcat -v <format> 选项指定日志输出格式。
          日志支持按以下几种 <format>

          参数显示格式
          brief<priority>/<tag>(<pid>): <message>
          process<priority>(<pid>) <message>
          tag<priority>/<tag>: <message>
          raw<message>
          time<datetime> <priority>/<tag>(<pid>): <message>
          threadtime<datetime> <pid> <tid> <priority> <tag>: <message>
          long[ <datetime> <pid>:<tid> <priority>/<tag> ] <message>

          日志格式默认为 brief,指定格式可与上面的过滤同时使用。比如:

          adb logcat -v long ActivityManager:I *:S
          
           
          • 1

          4.8.1.3 清空已存在的日志

          adb logcat -c
          
           
          • 1

          4.8.1.4 将日志显示在控制台

          adb logcat -d
          
           
          • 1

          4.8.1.5 将日志输出到文件

          adb logcat -f <file-path>
          
           
          • 1

          4.8.1.6 加载一个可使用的日志缓冲区供查看

          adb logcat -b <Buffer>
          
           
          • 1

          Android log 输出量巨大,特别是通信系统的log,因此,Android把log输出到不同的缓冲区中,目前定义了四个log缓冲区:

          缓冲区含义
          Radio输出通信系统的 log
          System输出系统组件的 log
          Event输出 event 模块的 log
          Main所有 java 层的 log 以及不属于上面3层的 log

          缓冲区主要给系统组件使用,一般的应用不需要关心,应用的log都输出到main缓冲区中。默认log输出(不指定缓冲区的情况下)是输出System和Main缓冲区的log。

          4.8.1.7 打印指定日志缓冲区的大小

          adb logcat -g
          
           
          • 1

          4.8.2 内核日志

          adb shell dmesg
          
           
          • 1

          输出示例:

          <6>[14201.684016] PM: noirq resume of devices complete after 0.982 msecs
          <6>[14201.685525] PM: early resume of devices complete after 0.838 msecs
          <6>[14201.753642] PM: resume of devices complete after 68.106 msecs
          <4>[14201.755954] Restarting tasks ... done.
          <6>[14201.771229] PM: suspend exit 2016-08-28 13:31:32.679217193 UTC
          <6>[14201.872373] PM: suspend entry 2016-08-28 13:31:32.780363596 UTC
          <6>[14201.872498] PM: Syncing filesystems ... done.
          
           
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7

          中括号里的 [14201.684016] 代表内核开始启动后的时间,单位为秒。
          通过内核日志我们可以做一些事情,比如衡量内核启动时间,在系统启动完毕后的内核日志里找到 Freeing init memory 那一行前面的时间就是。

          4.9 查看 Android 设备系统属性

          查看 Android 设备系统属性的基本命令格式是:

          adb shell getprop [options]
          
           
          • 1

          除了可以查看 Android 设备系统属性之外,还可以设置系统属性,设置系统属性的基本命令格式是:

          adb shell setprop <key> <value>
          
           
          • 1

          4.9.1 查看设备型号

          adb shell getprop ro.product.model
          
           
          • 1

          输出示例:

          Nexus 5
          
           
          • 1

          4.9.2 查看设备电池状况

          adb shell dumpsys battery
          
           
          • 1

          输出示例:

          Current Battery Service state:
            AC powered: false
            USB powered: true
            Wireless powered: false
            status: 2
            health: 2
            present: true
            level: 44
            scale: 100
            voltage: 3872
            temperature: 280
            technology: Li-poly
          
           
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12

          其中 scale 代表最大电量,level 代表当前电量。上面的输出表示还剩下 44% 的电量。

          4.9.3 查看设备屏幕分辨率

          adb shell wm size
          
           
          • 1

          输出示例:

          Physical size: 1080x1920
          
           
          • 1

          该设备屏幕分辨率为 1080px * 1920px。
          如果使用命令修改过,那输出可能是:

          Physical size: 1080x1920
          Override size: 480x1024
          
           
          • 1
          • 2

          表明设备的屏幕分辨率原本是 1080px * 1920px,当前被修改为 480px * 1024px。

          4.9.4 查看设备屏幕密度

          adb shell wm density
          
           
          • 1

          输出示例:

          Physical density: 420
          
           
          • 1

          该设备屏幕密度为 420dpi。
          如果使用命令修改过,那输出可能是:

          Physical density: 480
          Override density: 160
          
           
          • 1
          • 2

          表明设备的屏幕密度原来是 480dpi,当前被修改为 160dpi。

          4.9.5 查看设备显示屏参数

          adb shell dumpsys window displays
          
           
          • 1

          输出示例:

          WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
            Display: mDisplayId=0
              init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731
              deferred=false layoutNeeded=false
          
           
          • 1
          • 2
          • 3
          • 4

          其中 mDisplayId 为 显示屏编号,init 是初始分辨率和屏幕密度,app 的高度比 init 里的要小,表示屏幕底部有虚拟按键,高度为 1920 - 1794 = 126px 合 42dp。

          4.9.6 查看设备 android_id

          adb shell settings get secure android_id
          
           
          • 1

          输出示例:

          51b6be48bac8c569
          
           
          • 1

          4.9.7 查看设备IMEI

          在 Android 4.4 及以下版本可通过如下命令获取 IMEI:

          adb shell dumpsys iphonesubinfo
          
           
          • 1

          输出示例:

          Phone Subscriber Info:
            Phone Type = GSM
            Device ID = 860955027785041
          
           
          • 1
          • 2
          • 3

          其中的 Device ID 就是 IMEI。
          而在 Android 5.0 及以上版本里这个命令输出为空,得通过其它方式获取了(需要 root 权限):

          adb shell
          su
          service call iphonesubinfo 1
          
           
          • 1
          • 2
          • 3

          把里面的有效内容提取出来就是 IMEI 了,比如这里的是 860955027785041。
          参考:adb shell dumpsys iphonesubinfo not working since Android 5.0 Lollipop

          4.9.8 查看设备 Android 系统版本

          adb shell getprop ro.build.version.release
          
           
          • 1

          输出示例:

          5.0.2
          
           
          • 1

          4.9.9 查看设备 IP 地址

          adb shell ifconfig | grep Mask
          
           
          • 1

          在有的设备上这个命令没有输出,如果设备连着 WiFi,可以使用如下命令来查看局域网 IP:

          adb shell ifconfig wlan0
          
           
          • 1

          如果以上命令仍然不能得到期望的信息,那可以试试以下命令(部分系统版本里可用):

          adb shell netcfg
          
           
          • 1

          4.9.10 查看设备 Mac 地址

          adb shell cat /sys/class/net/wlan0/address
          
           
          • 1

          输出示例:

          f8:a9:d0:17:42:4d
          
           
          • 1

          这查看的是局域网 Mac 地址,移动网络或其它连接的信息可以通过前面的小节「IP 地址」里提到的 adb shell netcfg 命令来查看。

          4.9.11 查看设备 CPU 信息

          adb shell cat /proc/cpuinfo
          
           
          • 1

          4.9.12 查看设备内存信息

          adb shell cat /proc/meminfo
          
           
          • 1

          4.9.13 查看设备更多硬件与系统属性

          设备的更多硬件与系统属性可以通过如下命令查看:

          adb shell cat /system/build.prop
          
           
          • 1

          这会输出很多信息,包括前面几个小节提到的「型号」和「Android 系统版本」等。
          输出里还包括一些其它有用的信息,它们也可通过 adb shell getprop <属性名> 命令单独查看,列举一部分属性如下:

          属性名含义
          ro.build.version.sdkSDK 版本
          ro.build.version.releaseAndroid 系统版本
          ro.build.version.security_patchAndroid 安全补丁程序级别
          ro.product.model型号
          ro.product.brand品牌
          ro.product.name设备名
          ro.product.board处理器型号
          ro.product.cpu.abilistCPU 支持的 abi 列表[节注一]
          persist.sys.isUsbOtgEnabled是否支持 OTG
          dalvik.vm.heapsize每个应用程序的内存上限
          ro.sf.lcd_density屏幕密度

          节注一:
          一些小厂定制的 ROM 可能修改过 CPU 支持的 abi 列表的属性名,如果用 ro.product.cpu.abilist 属性名查找不到,可以这样试试:

          adb shell cat /system/build.prop | grep ro.product.cpu.abi
          
           
          • 1

          示例输出:

          ro.product.cpu.abi=armeabi-v7a
          ro.product.cpu.abi2=armeabi
          
           
          • 1
          • 2

          4.10 修改设置

          注: 修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 adb reboot 重启设备,或手动重启。
          修改设置的原理主要是通过 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 里存放的设置值。

          4.10.1 修改分辨率

          adb shell wm size 480x1024
          
           
          • 1

          表示将分辨率修改为 480px * 1024px。
          恢复原分辨率命令:

          adb shell wm size reset
          
           
          • 1

          4.10.2 修改屏幕密度

          adb shell wm density 160
          
           
          • 1

          表示将屏幕密度修改为 160dpi。
          恢复原屏幕密度命令:

          adb shell wm density reset
          
           
          • 1

          4.10.3 修改显示区域

          adb shell wm overscan 0,0,0,200
          
           
          • 1

          四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。
          恢复原显示区域命令:

          adb shell wm overscan reset
          
           
          • 1

          4.10.4 修改关闭 USB 调试模式

          adb shell settings put global adb_enabled 0
          
           
          • 1

          用命令恢复不了了,毕竟关闭了 USB 调试 adb 就连接不上 Android 设备了。
          去设备上手动恢复吧:「设置」-「开发者选项」-「Android 调试」。

          4.10.5 修改允许/禁止访问非 SDK API

          允许访问非 SDK API:

          adb shell settings put global hidden_api_policy_pre_p_apps 1
          adb shell settings put global hidden_api_policy_p_apps 1
          
           
          • 1
          • 2

          禁止访问非 SDK API:

          adb shell settings delete global hidden_api_policy_pre_p_apps
          adb shell settings delete global hidden_api_policy_p_apps
          
           
          • 1
          • 2

          不需要设备获得 Root 权限。
          命令最后的数字的含义:

          含义
          0禁止检测非 SDK 接口的调用。该情况下,日志记录功能被禁用,并且令 strict mode API,即 detectNonSdkApiUsage() 无效。不推荐。
          1仅警告——允许访问所有非 SDK 接口,但保留日志中的警告信息,可继续使用 strick mode API。
          2禁止调用深灰名单和黑名单中的接口。
          3禁止调用黑名单中的接口,但允许调用深灰名单中的接口。

          4.10.6 修改状态栏和导航栏的显示隐藏

          adb shell settings put global policy_control <key-values>
          
           
          • 1

          <key-values> 可由如下几种键及其对应的值组成,格式为 <key1>=<value1>:<key2>=<value2>

          key含义
          immersive.full同时隐藏
          immersive.status隐藏状态栏
          immersive.navigation隐藏导航栏
          immersive.preconfirms?

          这些键对应的值可则如下值用逗号组合:

          value含义
          apps所有应用
          *所有界面
          package-name指定应用
          -package-name排除指定应用

          例如:

          adb shell settings put global policy_control immersive.full=*
          
           
          • 1

          表示设置在所有界面下都同时隐藏状态栏和导航栏。

          adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
          
           
          • 1

          表示设置在包名为 com.package1com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏。

          4.11 实用功能

          4.11.1 屏幕截图

          截图保存到电脑:

          adb exec-out screencap -p > sc.png
          
           
          • 1

          如果 adb 版本较老,无法使用 exec-out 命令,这时候建议更新 adb 版本。无法更新的话可以使用以下麻烦点的办法:
          先截图保存到设备里:

          adb shell screencap -p /sdcard/sc.png
          
           
          • 1

          然后将 png 文件导出到电脑:

          adb pull /sdcard/sc.png
          
           
          • 1

          可以使用 adb shell screencap -h 查看 screencap 命令的帮助信息,下面是两个有意义的参数及含义:

          参数含义
          -p指定保存文件为 png 格式
          -d display-id指定截图的显示屏编号(有多显示屏的情况下)

          实测如果指定文件名以 .png 结尾时可以省略 -p 参数;否则需要使用 -p 参数。如果不指定文件名,截图文件的内容将直接输出到 stdout。
          另外一种一行命令截图并保存到电脑的方法:
          Linux 和 Windows

          adb shell screencap -p | sed "s/\r$//" > sc.png
          
           
          • 1

          Mac OS X

          adb shell screencap -p | gsed "s/\r$//" > sc.png
          
           
          • 1

          这个方法需要用到 gnu sed 命令,在 Linux 下直接就有,在 Windows 下 Git 安装目录的 bin 文件夹下也有。如果确实找不到该命令,可以下载 sed for Windows 并将 sed.exe 所在文件夹添加到 PATH 环境变量里。
          而在 Mac 下使用系统自带的 sed 命令会报错:

          sed: RE error: illegal byte sequence
          
           
          • 1

          需要安装 gnu-sed,然后使用 gsed 命令:

          brew install gnu-sed
          
           
          • 1

          4.11.2 录制屏幕

          录制屏幕以 mp4 格式保存到 /sdcard:

          adb shell screenrecord /sdcard/filename.mp4
          
           
          • 1

          需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。
          如果需要导出到电脑:

          adb pull /sdcard/filename.mp4
          
           
          • 1

          可以使用 adb shell screenrecord --help 查看 screenrecord 命令的帮助信息,下面是常见参数及含义:

          参数含义
          –size WIDTHxHEIGHT视频的尺寸,比如 1280x720,默认是屏幕分辨率。
          –bit-rate RATE视频的比特率,默认是 4Mbps。
          –time-limit TIME录制时长,单位秒。
          –verbose输出更多信息。

          4.11.3 查看连接过的 WiFi 密码

          注:需要 root 权限。

          adb shell
          su
          cat /data/misc/wifi/*.conf
          
           
          • 1
          • 2
          • 3

          4.11.4 设置系统日期和时间

          注:需要 root 权限。

          adb shell
          su
          date -s 20160823.131500
          
           
          • 1
          • 2
          • 3

          表示将系统日期和时间更改为 2016 年 08 月 23 日 13 点 15 分 00 秒。

          4.11.5 重启手机

          adb reboot
          
           
          • 1

          4.11.6 检测设备是否已 root

          adb shell
          su
          
           
          • 1
          • 2

          此时命令行提示符是 $ 则表示没有 root 权限,是 # 则表示已 root。

          4.11.7 使用 Monkey 进行压力测试

          Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。
          简单用法:

          adb shell monkey -p <packagename> -v 500
          
           
            列名含义
            USER所属用户
            PID进程 ID
            PPID父进程 ID
            NAME进程名

            4.14.2 查看处理器实时状态

            adb shell top [-m max_procs] [-n iterations] [-d delay] [-s sort_column] [-t] [-h]
            
             
              参数含义
              -m最多显示多少个进程
              -n刷新多少次后退出
              -d刷新时间间隔(单位秒,默认值5)
              -s按某列排序(可用col值:cpu, vss, rss, thr)
              -t显示线程信息
              -h显示帮助文档

              输出信息各列含义:

              列名含义
              PID进程 ID
              PR优先级
              CPU%当前瞬间占用 CPU 百分比
              S进程状态(R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
              #THR线程数
              VSSVirtual Set Size 虚拟耗用内存(包含共享库占用的内存)
              RSSResident Set Size 实际使用物理内存(包含共享库占用的内存)
              PCY调度策略优先级,SP_BACKGROUND/SPFOREGROUND
              UID进程所有者的用户 ID
              NAME进程名

              4.14.3 查看进程 UID

              有两种方案:

              1. adb shell dumpsys package <packagename> | grep userId= 如:

                adb shell dumpsys package org.mazhuang.guanggoo | grep userId=
                userId=10394

              2. 通过 ps 命令找到对应进程的 pid 之后 adb shell cat /proc/<pid>/status | grep Uid如:

                adb shell
                gemini:/ $ ps | grep org.mazhuang.guanggoo
                u0_a394 28635 770 1795812 78736 SyS_epoll_ 0000000000 S org.mazhuang.guanggoo
                gemini:/ $ cat /proc/28635/status | grep Uid
                Uid: 10394 10394 10394 10394
                gemini:/ $

              五、参考

              1. ADB Shell
              2. Awesome Adb
              3. Android Debug Bridge
              展开全文
            • plot哈桑农户是最基本最常用的绘图命令,执行plot命令,系统会自动创建个新的图形窗口, plot函数有以下几种调用格式: 1)plot(x) a:当x是实向量时,则绘制出以该向量元素的下标(即向量的长度)为横坐标,以...


              本部分介绍MATLAB的图形窗口和二维图形的绘制: 二维曲线是将平面上的数据连接起来的平面图形,数据点可以由向量或者矩阵来提供,matlab大量的数据给二位图像提供了平台

              这就是matlab区别于其他科学计算的地方,实现了数据结果的可视化,具有强大的图形功能

              6.1. 二维绘图

              6.1.1. plot绘图命令:

              plot函数是最基本最常用的绘图命令,执行plot命令,系统会自动创建一个新的图形窗口,
              plot函数有以下几种调用格式:
              1)plot(x)
              a:当x是实向量时,则绘制出以该向量元素的下标(即向量的长度)为横坐标,以该向量元素的值为纵坐标的一条连续曲线
              b:当x是实矩阵时,按列绘制出每列元素值对应的下标的曲线,曲线数等于列数;
              c:当x是复矩阵时,按列分别绘制出以元素实部为横坐标,虚部为纵坐标的多条曲线;
              这个函数理论基础看似简单,实际上后续都很重要
              在这里插入图片描述
              如果要在同一个图形窗口之中分割出所需要的几个窗口来,可以使用subplot命令
              1)subplot(m,n,p):视图分割成m*n个视图,并指定第p个视图为当前视图,
              2)subplot(‘position’,[left bottom width height]),产生的新子区域的位置由用户自己指定,后面的四元组为区域的具体参数控制,宽高的取值范围都是【0,1】
              在这里插入图片描述
              2.plot(x,y)
              函数的功能要能准确把握,很重要
              在这里插入图片描述重要例子:
              在这里插入图片描述
              在这里插入图片描述
              3.plot(x1,y1,x2,y2,…)
              这个函数格式的功能是绘制多条曲线,在这一条指令之中,(xi,yi)必须是成对出现的,上面的指令等价于逐条执行plot(x,y)指令
              通过两个实例加深理解
              在这里插入图片描述
              在这里插入图片描述
              在这里插入图片描述
              注意:引入函数linspace(a,b,n) 用于将已知区间【a,b】n等分,返回值是各节点的坐标;
              4.plot(x,y,s)
              在这里插入图片描述
              在这里插入图片描述
              在这里插入图片描述
              hold on命令用来使当前轴及图形保持不变,准备接收plot函数之后的所绘制的新的图线,即把这些图形都花在一张图中,hold off就是之后的图形不在保持这一性质;

              hold on 命令的作用千万不能忘了

              示例:图像信息的保持:
              在这里插入图片描述
              在这里插入图片描述
              可以看到下面这个图保持了之前的图像,在此基础上加入了之后的新图
              在这个图纸中,可以看到,前两个图都消失了,因为已经off了
              示例:曲线属性的设置:
              在这里插入图片描述
              在这里插入图片描述
              5.plot(x1,y1,s1,x2,y2,s2…)
              这种用法格式与用法三相似,不同之处是此格式下有参数的控制
              在这里插入图片描述
              在这里插入图片描述
              这种操作方法一定程度上替代了hold on 命令,而且达到了代码精简的效果,显然很好

              6.1.2. fplot绘图命令:

              fplot命令是matlab的一个专门用于画一元函数图像的命令,这个功能plot命令也可以完成,实际上plot命令是根据我们给定的数据点来作图,而在实际情况中,我们不知道函数的具体情况,因此我们根据我们所选取的数据点来选择往往会忽略真实函数的某些重要特性

              fplot命令用来指导数据点的选取,通过内部的自适应算法,在函数变化的平稳的地方,它所选取的数据点会相对稀疏一点,在函数变化明显的地方,选点就会很密

              用fplot命令所作出的图像要比用plot命令做出的图像光滑准确
              在这里插入图片描述
              对上述的几种用法还有几点要说明
              在这里插入图片描述
              实例:绘制函数图线
              在这里插入图片描述
              从图中我们可以明显看出fplot命令所画出的图形比plot命令更加准确,这主要是因为分点取的太少了,也就是说对于区间的划分还不够细致,读者往往会感觉对长度为0.01的区间做50等分的划分已经够细致了,但是事实上远远不能精确描述原函数

              6.1.3. ezplot绘图命令:

              对于符号函数的图形化表示,用这个命令来做,利用这个命令,可以轻易的将一个符号函数图形化;
              在这里插入图片描述
              在这里插入图片描述
              可以看出,这个函数会自动生成函数图名!不错

              6.2. 不同坐标系下的绘图命令:

              上面讲的绘图命令都是使用笛卡尔坐标系,实际工程中,往往会涉及不同坐标系下的图像问题

              6.2.1. 极坐标系下的绘图:

              在MATLAB中,我们用polar命令来绘制极坐标下的函数图像,也有相应的调用格式:在这里插入图片描述
              实例:极坐标坐标系下的图形
              在这里插入图片描述
              在这里插入图片描述
              实例:在直角坐标系和极坐标系下画出图像
              在这里插入图片描述
              在这里插入图片描述
              如果我们单纯的还想看一下此图在直角坐标系下面的图像,可以借助pol2cart命令,可以将响应的极坐标数据点转化为直角坐标系下的数据点,注意,此函数得到的图像可不是原函数表达式的直角坐标系图像,有本质区别在这里插入图片描述

              6.2.2. 双y轴坐标

              双y轴坐标系实际上常用于比较两个函数的图像,操作命令就是plotyy()
              在这里插入图片描述
              实例
              在这里插入图片描述
              在这里插入图片描述

              6.3. 图形窗口

              matlab不仅擅长与矩阵相关的数值运算,同时还具备强大的图形功能,这是其他用于学科计算的编程语言所不具备的,matlab可以很方便的实现大量数据计算结果的可视化,可以很方便的修改和编辑图形界面

              6.3.1. 图形窗口的创建

              在这里插入图片描述在这里插入图片描述
              在这里插入图片描述
              在这里插入图片描述
              在这里插入图片描述
              在这里插入图片描述
              matlab提供了查阅上表中的属性和属性值的函数set和get使用格式如下
              在这里插入图片描述

              6.3.2. 工具条的使用

              在这里插入图片描述
              在这里插入图片描述
              在这里插入图片描述
              在这里插入图片描述
              在这里插入图片描述
              在这里插入图片描述
              在这里插入图片描述

              6.4. 综合实例–绘制函数图线

              在这里插入图片描述

              注意操作步骤:(1)定义变量(2)定义表达式(3)绘制函数曲线

              (1)使用ezplot()函数作图
              在这里插入图片描述
              (2)显示对数坐标系
              在这里插入图片描述
              (3)显示双y坐标系
              在这里插入图片描述

              展开全文
            • Linux运维工程师学习成长路线

              万次阅读 多人点赞 2019-12-14 20:52:46
              在某知名行业研究调查结果中,非互联网从业者对于运维相关问题的回复有三个高频词汇是:知道、没听过、网管。当调查人员告诉他们科幻电影中展示黑客高超技巧时的命令行界面,正是大多数运维工程师每日工作环境时,...

              作为互联网的幕后英雄,Linux运维工程师长期隐匿在大众认知范围之外,关于运维的讨论仍旧是一片无人涉足的荒漠。在某知名行业研究调查结果中,非互联网从业者对于运维相关问题的回复有三个高频词汇是:不知道、没听过、网管。当调查人员告诉他们科幻电影中展示黑客高超技巧时的命令行界面,正是大多数运维工程师每日工作环境时,他们发出极其一致的惊叹。相对于普罗大众的一无所知,技术圈对运维的态度则更偏向于黑色幽默。相较于开发等工作岗位,7*24小时待命的运维工程师总是默默无闻作为守护者,当然同时还要接受“背锅侠”这一艰巨使命。

              其实,Linux运维工程师被称为“背锅侠”只是网友调侃,有不少同学对这个岗位工作还是有一定误解。在双十二来临之际我们介绍下这个幕后英雄的技术岗位-Linux运维工程师

              目前国内互联网、移动支付、O2O业务发展迅猛,需要为亿万用户提供线上服务。像腾讯、百度、阿里等一线互联网公司,需要数十万台服务器和成千上万IT从业人士,来提供技术服务。

              那么在很多企业IT技术工程师中,一般会分为:开发、测试、运维等几大分支,其中,开发和运维大类中,又可分为很多具体技术岗位。

              在众多互联网公司,IT技术岗位,整体分为三大类:

              1、开发岗位,也就是我们所说的码农,天天撸代码。

              2、测试岗位,找码农写的bug,然后让码农改,改好后上线。

              3、运维岗位,需要搭建好线上服务环境及架构,并保证代码无误上线,及线上业务正常能够被用户访问。

              开发-测试-运维分工

              在企业中,整个技术生产线是这样的流程:

              开发需要开发好代码---> 交给测试工程师测试----->测试完成后,提交给运维工程师进行上线

              运维工程师,的一个重要工作是需要把开发写好的代码,发布出去,给用户提供服务。当然,很多大公司已经实现可持续集成,开发自己就能发布。但这个环节,也少不了运维工程师的支持。可以看出,Linux运维工程师在整个环节中是离用户最近的,也是决定用户访问质量的重要环节。随着移动互联网、O2O、云计算、大数据的发展,服务器的可用性,成为各家公司技术的分水岭,对于一些大的互联网公司而言,对服务器的可用性要求极高,有些要求可达到99.99%(一年停机时间不超过1小时)

              所以,公司对服务可靠性的追求,也会转化为对运维工程师的技能和能力要求,这也是目前高端运维工程师十分稀缺的原因,有不少企业,薪资30-50W找高端运维,但是很难找到合适的。要想成为一个高端Linux运维工程师,都需要具备哪些能力呢?如下图所示:

              看完以上能力要求,相信不少同学应该不会再认为Linux运维工程师没有开发重要了吧。Linux运维工程师,在企业担负非常重要的环节,这也是Linux运维工程师这个岗位,薪资高原因,甚至到后期薪资会比开发高的多。有很多前期做网管,桌面运维或者技术支持的同学,到后期,基本都选择转Linux运维岗,随着云技术的推广,docker、K8s、DevOPS普及,低端的技术支持岗位,会慢慢被边缘化,取而代之的是会这些新技术的中高级运维工程师。我有很多朋友做运维,腾讯、百度、阿里这些厂商,对于优秀的运维工程师,给年薪50W的还是不难的。在一线城市,对于不少刚入门的新手,基本起薪也能达到7K-9K左右。下图招聘的薪资,也是不低的。

              Linux运维工程师,总体来说,是比开发要好掌握一些,开发是要求比较高的数学能力,因为到后期,算法会成为很多人的天花板,Linux运维工程师学起来比较容易一些,都是实操类的学科,把命令、安装、配置和服务练熟。技术支持岗位往往到后期,都会选择晋升到Linux运维工程师。而且对于刚毕业的大学生来说,学习起来是非常顺手的,因为在学校的课程中,就包含了不少运维所需要的基本技能:操作系统、网络、数据库、Linux等。对于转行的人来说,Linux运维工程师的趣味性比较强一些,上手也更容易些,Linux运维是首选,上手容易趣味性强,薪资高,将来工作还轻松。

              想成为合格运维工程师,需要掌握不少技能,Linux运维工程师讲究的是广度,下面是年薪50W的Linux云计算工程师的学习路线图:

              1、Linux 系统基础⼊门-Linux的基础知识内容,和命令使用,以及用户和权限等核⼼知识点

              2、Linux 系统管理和进阶-Linux从进程、资源、任务、⽂件、软件包、磁盘等管理⽅法

              3、Linux 企业常用服务-企业级常用服务如DNS、FTP、Http、mail

              4、Linux 企业级安全原理和防范技巧以及网络和安全-Linux安全架构、安全威胁模型、以及加密、解密等原理,常见攻击和防范⼿段

              5、Shell 编程⼊门及进阶-Shell脚本基本用法以及进阶,从基础到精通,需要学习一些企业级常见脚本用法

              6、MySQL 应用原理及管理⼊门-Mysql安装、管理、授权、增删改查

              7、http 服务代理缓存加速-http ⾼级协议应用、缓存、web服务nginx

              8、企业级负载集群-企业级4层负载均衡LVS、和7层负载均衡nginx以及haproxy的企业应用,静动分离等

              9、企业级⾼可用集群-⾼可用集群原理,实现以keepalived为核⼼的⾼可用集群,以及主从高可用、双主,分库分表

              10、运维监控zabbix-企业级监控体系以及zabbix流⾏开源监控系统的功用及架构,自动发现,插件开发

              11、云计算运维自动化-Ansible、Puppet等运维自动化解决方案,Ansible生产环境应用案例和实战操练、批量进行上百台服务器

              12、WEB 服务体系架构-WEB服务体系架构,JSP体系、tomcat、CDN、缓存原理、压测、评估、LNMP、LAMP等

              13、⼤型互联⽹集群架构和实战⽅案-LB集群:nginx、Haproxy、LVS HA集群、动静分离

              14、MySQL DBA 实战技能和优化-数据库参数优化、分库分表、备份方案、数据恢复策略、主从复制、读写分离、连接池及sharding技术、MHA等

              15、企业级云计算Openstack-Keystone、Glance、Nova核⼼组件、网络模块、块存储服务等

              16、企业级⼤数据Hadoop 运维实战-列式数据库HBase基础原理、安装配置及其应⽤、Zookeeper集群构建、hadoop实现Namenode⾼可⽤

              17、企业级虚拟化KVM 实战-KVM环境:KVM的安装、配置及应⽤

              18、NoSQL 企业级应用-Nosql 应用,Redis、Mongodb、memcached分布式缓存集群实战

              19、企业级日志收集系统ELK 实战-海量数据日志收集系统Elasticsearch+Logstash+kibana 应用

              20、可持续化集成-Jenkins+github企业级应用

              21、虚拟化容器Docker-Linux 轻量虚拟化Docker ,Docker 的原理和安装,配置以及应用,以及生产环境配置和故障恢复

              22、企业级K8S实战-组件功能、安装、配置、企业级应用场景和常见故障分析,kubernetes集群部署,Kubernetes 中的网络管理

              23、Linux 系统调优实战-从内存、CPU、进程调度、磁盘IO、⽹络参数等全面讲解Linux系统调优

              24、Python 自动化开发-python自动化工具开发、Python实现执行环境构建及代码测试示例

              25、个人综合能力提升-表达能力、团队协作能力、执行能力、胜任力等

              以上25条技能,每一条大概价值2K,你的工资多少,在这个行业,就取决于你会多少。要想挣钱,你要先值钱。

               

              展开全文
            • 浦发银行 信息科技岗 大数据方向 面经

              万次阅读 多人点赞 2018-08-09 23:00:31
              、综合面 二、机试 三、专业面试 浦发面经 即兴演讲 上机测试 结构化面试 浦发银行大数据创新岗上海打卡 第部分 综合面试 第二部分 专业面试 第三部分 上机考试(只有开发和测试岗需要,别的岗可选) 浦发...

              浦发银行总行信息科技部(大数据方向)面试

              0绪论

              0.1 面试

              2018.8.6日面试了浦发银行信息科技岗,想写一个面经,发现大家都说的差不多了(面试流程较为固定),所以总结一下大家的面经(主要来自牛客网: https://www.nowcoder.com/search?type=post&query=%E6%B5%A6%E5%8F%91 ),为后来人提供个参考(明年应该变化不大)。

              面试主要分为三个部分:

              1. 即兴演讲(结构化面试 3面试官对6个学生)、
              2. 上机测试、
              3. 专业面试(3对1)。

              这三个顺序不固定,哪里面试官有空位 工作人员就先安排大家面哪一个部分。

              大家应该重点参考一下“结构化面试”的题目,提前排练一下,提前想一下“如果是我来回答这个问题,我该怎么答?” “别人把我想说的都说过了,怎么办?”,提前准备一下“固定套路、万能句式”,毕竟做编程的同学在这方面都不是特别强。(包括我 (┬_┬)

              0.2 招聘时间流程 参考

              • 2019届应届生参加 上海总部信息科技提前批,2018年8月6日面试,
              • 10月16日体检通知,
              • 11月21日背调邮件,
              • 11月30日给的offer邮件.

              浦发比较传统且谨慎,因此求职总流程比较慢,铁心去浦发的童鞋一定注意保留自己的三方,不要提前签了别家; 其他童鞋可以安心去其他公司继续面试, (后来发体检通知的时候, 我都快忘记自己面过浦发)

              1 大家的面经

              1.1 浦发银行总行(上海)大数据岗8月6号面经

              https://www.nowcoder.com/discuss/91911

              我是8月6号12:30的场次,面试的是大数据岗。面试一共三部分:综合面,技术面,机试,不分先后顺序,在2楼大厅等着工作人员叫名字,叫到哪里就去哪里参加面试。

              一、综合面

              综合面也就是群面,六个人一组,一共三个面试官。每个人进去抽题,每组有两道题目,抽到以后两分钟时间阅读材料,阅读完以后每个人三分钟时间阐述自己的观点。我当时抽到的题目是“长租公寓行业是否值得投资”,当时组里还有一道题目是关于“高考选择志愿”

              的问题,因为不是我所抽到的题目,所以没有额外留意。每个人三分钟演讲结束后,面试官会单独问问题,有的面试小组是每个人都被问到了,但我在的小组里我和另外一个男生没有被单独问问题,有可能是我三分钟演讲表现不好或者其他原因。后来面试官最后提了一道抢答题,当时考虑到自己没有被单独问问题,所以就抓紧抢了抢答题,但抢答嘛,没有时间考虑答案,所以回答也不是很好,群面就这样结束了。

              二、机试

              在大厅等候的时候工作人员会给你讲哪些岗位是必须要参加机试的,哪些岗位是不必须参加的但若你选择参加会给加分,所以基本上所有的人都会选择机试。机试题目都很简单一共三道题目:①输入一个数字要求输出该数字各个位上偶数的和,如输入5584,输出12。②输入一组数N和数字b ,求出该组数字中能被b 整除的个数。如输入1 2 3 4 5 6和 2,结果输出为3。③求N阶楼梯共有多少种上楼方式,每次只能上1个或2个台阶。编译环境只有java和c和c++,其他语言写的没办法现场编译,但工作人员说仍然提交,他们后再后台看你写的程序。我是用python写的。

              三、专业面试

              专业面试是让我觉得最无法描述的面试,仍然是工作人员喊到你的名字后去面试的地方等,三个面试官。当时我等的时候我前面有四个人,一个哈工大研究生,一个西安交大研究生,一个武汉大学的,还有一个美国回来的硕士生。工作人员说每个人面试时间10到15分钟,但我前面的几个都基本上15分钟,有的还有20分钟的。当时我在等的时候,他们每出来一个也和交流了一下面试官问了哪些问题,他们说自我介绍,针对自我介绍问了一些项目和算法问题。所以我自认为准备还是不错的。

              等我进去以后,面试官同样让我先自我介绍,我当时介绍了一下我是哪个大学什么专业的硕士,然后介绍了一下我会哪些机器学习算法,python编程,hive环境下sql 脚本开发,讲了一个我用逻辑回归和随机森林做的一个项目,最后讲了一下我上一份互联网公司的实习做的东西,在公司主要负责的事情。

              我觉得我的自我介绍还可以,只要想问应该能挖出来很多技术问题可以问。但面试官没有问我一个技术问题,从头到尾也只有一个面试官在问我,我自我介绍结束以后的问题:①我本科哪个学校的,学的什么专业(我本科普通一本非211),②说我硕士专业是控制,和大数据不对口。我解释了一下,虽然我是控制专业,但我导师是机器学习方向的,所以我做的也都是机器学习方向的东西。③问我不是计算机专业的,是不是对计算机编程的东西都不是很懂?(我当时也是一脸懵逼)我解释了一下说我可能做开发比不过计算机的学生,但我基本的东西都会,包括数据结构,操作系统的话Linux 基本指令都会,只不过编程语言是python不是java或者C++。④问我研一都在干什么?(我回答研一主要是上课和看论文)接着问我上什么课(我回答了模式识别,最优化方法,矩阵理论等)⑤接下来面试官就总结了一下,大概意思就是:我的专业不对口,虽然我说了我这些东西也做了不少实际的项目和事情,但给他们的感觉就是我学的很杂,乱七八糟的,让他们无从下手问我问题,感觉我不太符合大数据岗,还有一个就是他们觉得我会的这些东西都是我自学的,因为我的专业不对口(我也是一脸懵,即使计算机的学生,很多东西也不是老师上课教的呀,都是自己自学)

              总之,技术面就这样结束了,我具体多长时间没看表,但大概七八分钟吧,绝对不到十分钟。回来以后我也在反思技术面哪里出了问题。各种原因吧,肯定有我自身的原因。也有可能我前面都是双985都是很优秀的人,到我这面试官压根不想面我吧,不想深入交流。也有可能面试官对我学历和专业不满意(本科普通一本,硕士上海这边的211)

              总之,感觉找工作很随缘吧,我还幻想如果分到别的技术面小组说不定面试官会问我几个技术问题呢,现在也看开了,反正就水了水浦发,炮灰一把呗。

              1.2 浦发面经

              作者:白夏是小白
              链接:https://www.nowcoder.com/discuss/91866
              来源:牛客网

              我投的是总行信息科技部,面试主要分为三个部分:即兴演讲、上机测试、结构化面试。在武汉面试的,从上午十二点左右到武汉分行,到了下午六点多才走,等待面试等得心急如焚。HR小姐姐们十分贴心了,给又饿又焦急的我们买了面包牛奶,笔芯:)

              即兴演讲

              即兴演讲六个人一组,每个人都有一个序号,然后面试的时候一共有三个面试官。进去之后每个人抽一个题目,两分钟看题三分钟回答。这个回答次序是自定的,虽然说第一个举手回答有一定好处,但是一定要思路想清楚描述想清楚了再回答啊QAQ,大概主要是考察表达能力吧,我抢第一个结果回答得巨烂ORZ
              我的题目是说学校决定把什么校车超市之类的地方交由学生管辖,有人认为这会让学生重商轻学,然后问你的看法。
              六个人都回答完之后面试官会提一个问题让六个人回答,我们的问题是“大学里得分最高的一门课是什么?为什么能拿这么高的分?”,然后再抽几个人问了问题,面试官特地问了我一个“你是本科生?”的问题,觉得本科生仿佛受到歧视。

              上机测试

              上机测试是三道巨简单的题目,大概每一个几行代码吧。
              我的三个题目是:
              字符串反转
              数列求和
              字符串缩写
              (悄咪咪说一句,还可以看到大家的做题状态和排名,而且好像是手改,不是很懂)

              结构化面试

              结构化面试就是正常的面试,大概一个人十分钟左右的样子,人多,面试官少,等得生无可恋。三个面试官对一个人,一个主面试官问一些基础问题,然后旁边两个面试官有针对性的问问题,应该一个是问语言,一个是问数据库。
              一开始先自我介绍,然后开始问专业问题,好像面试官手上有一个记录,问一个问题,你说会他做一个记号,说不会或者停顿沉默一会儿就会划掉下一个问题(时间很紧不能迟疑吖)。
              结构化面试大概是整个面试流程中最体现专业的地方了吧可是我并没有感觉到很专业。我在网申的时候在简历上写了一句觉得银行的工作压力比互联网公司小,然后面试的时候特地问了我一句,“你确定吗”,搞得我很虚,我说我接受不了长期熬夜,总觉得会因为这个被毙掉ORZ

              总结
              整个过程下来,我觉得面试银行本科生毫无竞争力,一片全是研究生大佬;而且银行的面试让人捉摸不定,不知道他们到底想要什么样的人,可能比较需要全方面发展,可是技术的话就比较一言难尽。但是整个过程下来就没什么压力,人比较放松,虽然之后越想越凉凉吧emm
              据说浦发结果短则一个月多则两三个月才出来QAQ可能是并不想招人!

              1.3 浦发银行大数据创新岗上海打卡

              作者:明媚_
              链接:https://www.nowcoder.com/discuss/91675
              来源:牛客网

              面试分为三部分

              第一部分 综合面试

              6-7个人抽材料,阅读两分钟,表述三分钟,目前了解到的题:央行发布撤销某些地区的地铁修建资格,问认为这些地区是否该修建/积极废人/阅读习惯/中国是圆珠笔产量大国,核心技术掌握在别的国家/人工智能对银行的影响/无纸化阅读

              第二部分 专业面试

              首先进行自我介绍,根据自我介绍进行提问,确实重视项目,项目问了很久,别的没怎么问,感觉面试官并不专业。除项目问题,问了为什么这么多银行选择来浦发/你的职业规划/最近浦发上一款新产品你知道吗/对互联网有热情吗

              第三部分 上机考试(只有开发和测试岗需要,别的岗可选)

              我做的是以下三道题(开发语言不限)
              1 N的阶乘
              2 输入十个数,最大数和最后一个数交换,最小树和第一个数交换
              3 猴子吃桃子(经典问题,自行百度)

              求好运,攒人品啦?

              1.4 浦发总行信息岗校招面经(上海)

              作者:疯狂求offer
              链接:https://www.nowcoder.com/discuss/91174
              来源:牛客网

              之前也看了不少牛客上的笔经面经,感觉收获很多,昨天(8.5)面了浦发,趁着还有印象写个面筋回馈牛客,顺便攒攒秋招RP~

              我面的系统开发岗,面试时间是8.5中午12:30,当时提前一个多小时坐地铁过去的。结果从12号线虹梅路下来后导航导偏了,绕着附近的科技园转了一圈,经过好心的保安大叔指点后才知道莲花路1688号在哪儿_(:з」∠)_。浦发漕河泾这边的信息园区不是很大,走进楼里感觉环境挺好的,干净整洁,走廊里铺有地毯很舒服。本来以为会迟到,结果到签到处的时候发现前面好多人……排队都要绕着弯儿,目测下午场有接近100个人。由于是中午,当时我还听见HR小姐姐对上午场的同学们说如果没有面试完可以领饭票去一楼食堂免费吃饭,顿时就还挺有好感的,毕竟能为面试者们着想。在签到处会扫描身份证,拿一张打印有自己名字的纸(当作铭牌用)和一张小纸条。小纸条上写的是面试的三个环节:综合面试、专业面试和上机考试,然后就坐在等候区等待HR小姐姐叫号了。等待过程略去不表。

              专业面

              我首先抽到的是专业面试,大概进行了二十多分钟。有三位面试官,有两个感觉像是管理层,大概五十多岁,还有一个大概三十多岁。首先是自我介绍,表明了一下为什么想去浦发。首先是较年轻的面试官提问,开始问了项目,由于项目是做并行计算的,就让我讲讲设计和实现细节。然后问了数据库,增查删改等SQL命令,还问用过哪些数据库(项目中的),其实我做的项目没用数据库_(:з」∠),就略尴尬,但也如实回答了,为了挽回点气氛我就说了数据库事务的四大特性(ACID)和例子,然后他就接着问原子性的实际应用场景,我再举了个例子但是感觉好像那个面试官不太满意。接着问有没有做过socket之类的网络编程,我说没有……由于项目是在Linux集群下实现的,好像他们不太懂,就解释了一番,感觉他们好像还是没懂(:з」∠),然后就问了Linux下的常用命令。由于我不是计算机专业的,就问我有没有上过数据结构与算法的课,然后问了常用的排序算法以及口述快排的实现思路。接着其中一个面试官就问我本科研究生阶段都上过什么课程,然后问原专业做的挺好的为什么想转行来银行,我就商业互吹了一波。坐中间的那个大佬突然冷不丁说,你导师知道你转行来银行面试吗,导师同意吗。我懵逼了1s后就说导师很好不会限制学生云云,大佬也没继续问。面试官们貌似对做的项目挺感兴趣,又让我讲并行是怎么实现的,有啥优化的地方。最后大佬说有啥想问的,我突然犯二就问您在浦发一天的工作是怎么样的,这时候轮到大佬一愣(:з」∠)……估计他心想这小伙子胆儿够肥啊。然后面试官们就说了一通,听下来了解到他们都是管理层的,大佬惹不起惹不起(:з」∠)_。然后又问我还有啥问题,我说没有了,于是专业面结束。出来的时候看了看表,有二十多分钟,听候场区的几个人说他们都很快就十多分钟,我估计是因为自己非科班的缘故,被抓着一通提问。

              结构化面试

              接着又是漫长的等待,这次我抽到了综合面试(群面)。技术岗还有群面我也是有点懵的,心想待会儿说的时候有条理一些就行。群面形式就是每个人2分钟阅读一份材料,然后3分钟阐述观点。我抽到的是网络成瘾这块儿。思路还是不错的,有条理分点阐述了,但是我以为时间很紧就语速很快地说了,不知道面试官听明白了没有,事后感觉这块儿太可惜了语速应该平稳一点,因为我后面的小伙伴们都是慢悠悠地说完的,面试官也没把他们怎么着_(:з」∠)_。接着就是提问环节,没啥好说的。但是其中一个面试官就点出为啥不穿正装,我就很尴尬(之前是谁说银行技术岗不穿正装也OK的啊喂)……后来解释说得体的衣服就行了,也没说啥。大概三十分钟左右群面就结束了,又回到排队叫号环节。

              上机考试

              上机考试的地方大概有三四十台机子,很多人在做题,做完签字就可以走。不得不吐槽一下那个OJ系统和本地IDE是真的难用,一开始很不顺手。OJ上支持的语言有Java、C、C++,没有的可以用伪代码,后面会人工判题给分。题目很简单有三道题,分段函数实现、两个字符串查重、凯撒密码,分值分别是40,40,20。有一题我在本地调试成功但是在OJ上死活都编译不通过,很迷,但我也索性提交了,一切随缘。这个OJ系统还有调试10s内不能提交这种莫名其妙的设定,搞得现场很多人出错。据说除了大数据岗位其他都需要上机考试,但是我感觉几乎所有都去上机了。上机结束后我就坐地铁回学校了,这一天不知道怎么的肚子很不舒服,体验了好几次浦发的洗手间(还挺干净的,一点异味都没有)(:з」∠)

              整个流程很长,我从12:30一直到17:30左右才结束。总结下来感觉银行类的面试很注重数据库及相关实现,如果有相关经历是最好不过了。

              1.5 【浦发银行】信息科技岗(大数据创新岗)8.6日上海总行面经

              作者:爱吃水果的鱼
              链接:https://www.nowcoder.com/discuss/91147
              来源:牛客网

              楼主是中午12:30场次的,因为从上海其他地方坐地铁到漕河泾开发区地铁站,没有吃中午饭,问了下门卫,说可以在食堂吃,25块钱,可支付宝,酸奶水果饮料3选2,菜任意吃。
              具体请见图片,菜色一般般吧,还稍稍有点贵,不过我觉得他们银行工作人员是有饭补的,哈哈哈
              具体流程如下,面试等候区在2楼,电梯出来右手边可以看到指示牌,往厕所那个方向走,就能看到一堆人,先排队,打印自己的名牌,然后等。等着被叫去上机考试(c/c++,JAVA可以测试运行,提交的步骤为提交—>可以本地复制代码---->最下方测试运行----->提交,可以看到自己的代码是否正确),综合面试,专业面试,三者顺序不一定按照所说顺序,哪里有空就把你安排到哪里。
              面试时间大部分都在等候,做完机试在等候区等候,专业面试完去等候区等候,综合面试完就可以走了,很奇怪的是我的专业面试只有5分钟左右,可能说自己不了解数据库,和面试岗位不太匹配吧,23333,具体面经看下图!

              这里写图片描述

              1.6 热乎乎的浦发总行8月6日面筋!

              作者:上海伊泽瑞尔
              链接:https://www.nowcoder.com/discuss/91095
              来源:牛客网

              本人秋招第一次大型面试,打卡攒人品。

              浦发银行总行信息科技部(需求设计方向)面试
              时间:8月6日12:30-16:00

              面试在总行,离学校比较远,所以我提前两小时出发,到的时候前台小姐姐给了我一张餐券,幸福!!食堂伙食还不错!
              候场的candidate黑压压的一片,我问了下工作人员,说这三天在上海面试的总行信科的就有700多人,可见竞争多激烈(大家都开玩笑地说难道笔试不刷人?)
              到点后有工作人员来讲规则,面试分为三部分:综合面试、专业面试和机考,点到后就跟着分别去面试就好。三部分一天结束,预计结果要等一到两个月。(不太理解为什么等这么久)

              一、专业面试(其实更像挖简历的行为面?)

              我先被点到参加专业面试,据说在15mins左右,可是在我前面两位小姐姐都在20mins以上。进去后发现有三位面试官,两男一女,看起来很有资历了前面有一个位子面试者坐,隔得比较远。问好后首先就是万年不变的自我介绍,以及对本人来说,万年不变的“专业不对口”问题。接着对我的实习经历进行了深挖。包括怎么写报告的?报告有哪些亮点?等等。
              三位都有问,且侧重点不同。中间一位侧重需求设计,问我对需求设计有什么理解?我利用了产品经理的相关知识,先说产品的生命周期第一步就是需求设计,并列举了需求设计的三个过程,以及其中的具体方法。面试官指出银行的产品有所不同,需求之后直接输出需求文档及原型转给开发人员,而不像互联网一样先给用户定位和画像。紧接着问如果开发技术不同意我的需求设计怎么办(举了一个最近的例子,一个PM和程序员因为一个需求打起来了)?我答先从自身找问题,再诚心与技术人员沟通。这里强调了产品(需求)人员懂点技术的重要性(“嗯嗯,您说的很有道理”)。后来又问了为什么不继续在券商实习?如果给你offer,同时又有券商基金的offer,该怎么选择?我举了一个例子,如果我是踢球的,皇马巴萨两家俱乐部都想签我,我会考虑自身的特点以及他给的位置和战术安排。最后强调相比之下,总行的信息科技岗对我的吸引力还是很大的!估计他也是球迷吧,听了我这个回答会心一笑。
              右边的女面试官详细问了我公众号的运营经历以及写研究报告的过程。
              左边的面试官很关心我的计算机水平,我自然是要摆低姿态,毕竟小白一个,只自学了一点python而已。后来他问我对计算机本身的了解?有没有拆过计算机?我只好说不好意思了(只有一次因为风扇太吵,拆过一次清灰)。又问我平时关注互联网新闻吗?这个我给了肯定的回答。后面又问我区块链,我只懂一个大概,并说最大特点是去中心化记账。他的这一系列问题我没回答好,也看出了他的失望。还是平时积累不够!!这一块要加强!!

              二、综合面

              六人一组进到一个小房间。六对三面试。每人抽一个话题表达自己的看法。我抽到“如何看待选秀(例如创造101)对青少年的影响?利大于弊抑或弊大于利”。我从三个方面,理性、感性角度及节目本身的特点进行了阐述,结论利大于弊。六个人有三位抽到了这个话题,都支持利大于弊。另三位抽到的是“如何看待高铁吸烟的问题”。个人认为这个不太好说。
              随后面试官问了三位:介绍一下你写的一篇论文;另外三位(包括我):你认为你的优势是什么。一位面试官突然Q我(大概我是这场唯一的男生??),有软件开发经验吗,我表示遗憾,外加生无可恋。。。

              三、机考(编程)

              前一天才知道要机考,只好临时抱了个佛脚,把自学的内容胡乱看了一遍。据说编程题比较简单,例如字符串逆转,大小写,数列求和等等。结果今天说需求设计方向不需要机考!瞬间长舒一口气哈哈哈哈。

              最后赞一下耐心负责的现场面试官和工作人员,以及食堂!
              欢迎小伙伴交流!

              1.7 秋招面经(持续更新,攒RP 银联系统开发)

              作者:ㄣArviiinズ
              链接:https://www.nowcoder.com/discuss/90894
              来源:牛客网

              1.浦发银行总行信息科技部面试(2018.8.5 12.30场)

              综合面:

              三个面试官,6个人,每人给一份材料,一支笔,2分钟阅读材料,3分钟演讲,我的是怎么看待格力董明珠要不要做芯片 我没抽到的另一个是:你怎么看网络综艺和电视台综艺.

              结束后会有提问,有的问自我介绍,有的问自己的优点等,但是我很奇葩的被问了看了什么论文。

              技术面:

              三个面试官对着你一个人,开始就是自我介绍,对着你介绍的问,所以说的时候不要给自己挖坑,技术点细节不怎么问,另外不要把问题想复杂,我有的问题说的太细了,面试官就说可以了,下一个问题。

              机试:

              三道题,第一题:分段函数。第二题:A,B两个字符串,求在第一个字符串出现,第二个字符串中未出现的,重复只取第一次出现,输出字符串。第三题加密解密,就是给你由大写字母组成的字符串,求出原来的字符串,加密 。方式很简单就是字符串后移五位,比如原来是A加密后是F,其余数字等标点符号原样输出.

              总结:时间持续的蛮久的,都是在等的状态,我四点多结束的.

              2.浦发银行总行信息科技部面试(2018.8.9 9.30场)
              到了以后交材料,然后填一个很详细的表,4页.太可怕了.
              群面:2个面试官12个人无领导小组讨论,每人给一份材料,一支铅笔,一张白纸5分钟阅读材料,1分钟自我介绍并回答材料问题,关于金融风险的排序问题.接下来20分钟的自由讨论和3分钟的陈述总结.刷的人不多,面试官也不看我们.

              技术面: 2个面试官对你一个人,开始就是上交简历自我介绍。然后对着简历问问题.我问到了hashMap,反射实现的机制.高并发,还有一些关于自己项目和实习经历的.人还是很nice的,聊的还不错.

              总结:,效率和时间安排还可以,我快12.30结束的.

              1.8 上海浦发面经(秋招面经持续更新,攒人品)

              作者:我只是弱鸡
              链接:https://www.nowcoder.com/discuss/90871
              来源:牛客网

              8.4日,大数据方向,共两面,加上机

              综合面:6个人,每人给一份材料,2分钟阅读材料,3分钟演讲,我的是怎么看待,app,纸质阅读,等多样化阅读,并保持阅读高效性

              另外一个材料:中国生产圆珠笔里的主要材料都是进口的,但却是圆珠笔产量第一的国家,你怎么看?

              结束后会有提问,自我介绍,关于材料哪位同学讲的好之类。

              技术面:自我介绍,会问项目的内容,你对投递岗位的理解,你做的项目如果用到银行会有什么应用,技术点不怎么问。

              上机:可选项,可做可不做(开发方向上机必须,题都基础)。三道题,第一题,从求组中找出唯一出现一次得数。第二题,给年月日,判断是方面第几天。第三题,小球从100米下落,每次回弹一半距离,第几次落地后的总距离。

              1.9 浦发银行现场面(武汉地区)

              作者:珞珈山落草为寇
              链接:https://www.nowcoder.com/discuss/90567
              来源:牛客网

              七月三十一号浦发现场面试,记录下,回馈牛友.
              面试三项流程:结构化面试+即兴演讲+机试
              结构化面试分为两组:每组三个面试官,主要就是对着简历问.
              面试官会让你自我介绍,我介绍的很简短,简历上已有的内容就没介绍,结果面试官让我自己把自己的项目也介绍下(面试官太懒,想听你说)
              有个面试官看见我写的Java项目,就问了几个Java的水题,比如接口和类的区别,常用集合类等.
              然后就出去等候下一轮召唤.
              接下来就是机试,机试很水,三道题,每题代码量不超过十行(可以用Eclipse/Notepa++)
              字符串逆序输出,数列和,小写转大写
              好像用的是华科的OJ评测系统.
              最后一轮是即兴演讲面.6个人一组,抽题目,两分钟读题,三分钟陈述观点.
              总结:面试很耗时,效率很低.中午12.30开始,一直拖动下午五点多才结束.
              面试结果未知,群里说有等一个月或者几个月的.

              1.10 浦发银行(西安分行)信息科技岗面经

              作者:neu张康
              链接:https://www.nowcoder.com/discuss/89581
              来源:牛客网

              先说一下,我投的是(系统开发方向)
              一面:群面,6人一组,每人抽一题,看2分钟然后进行个人演讲。6个人都完事后面试官会问你,你觉得本次演讲谁最突出,推荐2人。
              二面:技术面,三位面试官,问得问题范围比较大,细节问得不多。首先是自我介绍,因为我写的项目中涉及到高并发,然后问从代码的角度如何优化(回答的好像不满意)。其次又问了java的开源框架都熟悉哪些,我说了spring,然后就问了IOC和AOP。然后又问熟悉tomcat吗,配置连接池的时候如何配置最大连接数。然后又问了问研究生期间做的什么,然后就没有然后了。java虚拟机,集合,线程什么的一点没问。
              三面:机考,三个编程题。
              第一题:把字符串中的字符a和A换成c输出。
              第二题:给你年月日,求出是这年的第几天
              第三题:给你两个数,例如23和456,23456=24 25 26 34 35 3*6,让你实现这个算法。

              展开全文
            • 2021【软件测试】面试题合集大放送

              万次阅读 多人点赞 2019-09-10 18:04:37
              准备好场面试不仅需要在简历上多下功夫,还需要为面试问答做好充足的准备,简历书写请参考:https://blog.csdn.net/leboxy/article/details/100658701。以下是“大佬”本人从乐搏学院VIP学员面试经验中收集的,...
            • C#基础教程-c#实例教程,适合初学者

              万次阅读 多人点赞 2016-08-22 11:13:24
              C#基础教程-c#实例教程,适合初学者。...当然仅靠章的内容就完全掌握C#语言是可能的,如需进一步学习C#语言,还需要认真阅读有关C#语言的专著。 1.1 C#语言特点 Microsoft.NET(以下简称.NET)框...
            • [编程语言][汇编语言]计算机与汇编语言

              千次阅读 多人点赞 2015-11-30 18:47:31
              我们的大脑不能计算过于复杂的计算,否则就需要借助草稿来暂时记下中间的计算结果。CPU其实和我们的大脑是一样的,只能计算一定范围内的运算。对于稍稍复杂一些运算,CPU就需要暂时把中间结果保存在内存中。 ...
            • Linux常用命令全集

              千次阅读 2019-07-01 16:47:27
              Linux常用命令 ...
            • Android adb 命令大全

              千次阅读 2019-07-02 12:28:09
              ADB,即 Android Debug Bridge,它是 Android 开发/测试人员可替代的强大工具,也是 Android 设备玩家的好玩具。 持续更新中,欢迎提 PR 和 Issue 补充指正,觉得有用的可以将 此 GitHub 仓库 Star 收藏备用。 注...
            • Linux mount挂载命令

              千次阅读 2020-01-20 11:00:59
              、挂载概念 Linux中的根目录以外的文件要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除此关联关系的过程称之为“卸载”。 注意:“挂载点”...
            • 'java' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 今天在运行逆向的jar ,其中在cmd中用到了java命令。 配置JAVA环境变量如下: 1.下载安装jdk 2.安装完成后,右击“我的电脑”,点击“属性”; 3....
            • 返回上级目录的命令是: cd .. (注意,是2个半角小点)。 DOS命令 CD\ 这样就回到根目录了。如果想返回上级目录CD..就可以了   DIR —— 列目录。列出目录下的子目录和文件。  例:DIR 〈Enter〉 列出...
            • Oracle sqlplus的set命令详细使用和设置

              千次阅读 2019-09-24 18:19:48
              Oracle sqlplus的set命令详细使用和设置 SQL*Plus是Oracle提供的访问数据库服务器的...
            • 作为个程序员,在软件开发职业生涯中或多或少会用到Linux系统,并且可能会使用Linux命令来检索需要的信息。本文将为各位开发者分享10个有用的Linux命令,希望对你会有所帮助。 以下就是今天我们要介绍的Linux...
            • 文章目录linux 系统命令总结大全关于作者**作者介绍**0.IP 地址相关命令0.1 ifconfig 命令 ---显示网络设备信息02.ip 命令 ---显示与操作路由03.dhclient 命令 --- 动态获取或释放IP地址04.nmtui ---界面修改网卡...
            • SecureCRT萌新常用命令及Linux命令大全整理

              万次阅读 多人点赞 2016-12-30 13:37:49
              SecureCRT常用命令,Linux常用命令
            • Linux常用命令大全

              万次阅读 多人点赞 2018-06-01 16:16:10
              Linux常用命令大全1.Linux管理文件和目录的命令命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 ...
            • DOS常用命令(从入门到精通)

              万次阅读 多人点赞 2018-08-26 11:27:24
              DOS命令学习 、DOS使用常识 DOS(Disk Operating System)是个使用得十分广泛的磁盘操作系统。 常见的DOS有两种:IBM公司的PC-DOS和微软公司的MS-DOS,它们的功能、命令用途格式都相同,我们常用的是MS-DOS。...
            • 基础篇:Linux 常用命令总结

              万次阅读 多人点赞 2021-08-29 19:25:39
              熬夜爆肝Linux集合,还收藏?
            • ADB 操作命令详解及用法大全

              万次阅读 多人点赞 2018-11-14 16:48:12
              ADB 操作命令详解及用法大全、ADB是什么?二、ADB有什么作用?三、ADB命令语法单一设备/模拟器连接多个设备/模拟器连接四、ADB常用命令4.1 基本命令4.1.1 查看adb的版本信息4.1.2 启动adb4.1.3 停止adb4.1.4 以 ...
            • 这都是个个问题,CAD图纸的绘制版本决定了打开其图纸的最低版本,也就是说,我们平时不管是在查看还是编辑图纸的时候,有的时候,它的文件就是打开,除了格式的损坏问题,再就是版本的兼容问题了。 现在随着...
            •  用命令行窗口cmd输入ls命令出现“ls不能内部或外部命令”,   因为与这个命令相似的功能是dir,所以以下方法可解决:   1.在C:\windows目录下新建个文件 命名为 ls.bat   2.打开编辑这个文件 输入: ...
            • latex 中文书籍常见命令

              千次阅读 2016-12-09 17:06:02
              Tex软件版本: Texworks 2016 书籍模板: ...%\usepackage{bookman} % 种字体 ...命令释义 ...\newcommand % 定义个系统存在的命令,用户为了方便自己可以定义便于自己阅读和使用的命令 ......
            • Vim命令查看图

              千次阅读 2014-03-23 22:38:47
              对经常使用Vim的程序员而言,掌握一般的h,j,k,l,dd,yy,x,p,u等基本命令虽说可以代码,写代码了,但效率还足以比windows下编辑器相比有优势,要想更大的提高效率,还有很多命令需要在实战中掌握。...
            • 11个炫酷的Linux终端命令大全

              千次阅读 2016-07-22 08:51:27
              11个炫酷的Linux终端命令大全,通过今天这篇文章我将向大家展示系列的Linux命令、工具和技巧。 作者:gm来源:pc6.com|2016-07-21 14:36  收藏  分享 今天给大家分享用了十年的Linux总结
            • Windows DOS命令详解01——命令格式说明、dir命令前言DOS命令简单来说就是Windows系统的命令行,虽然Windows的图形化操作做的很好,但是某些时候图形化操作效率过低,方便记忆。所有DOS命令在这些时候就显得...
            • linux查看分区命令

              千次阅读 2021-02-04 15:10:12
              4.1 df命令 4.2 du命令 4.3/4.4 磁盘分区 df命令 df输出磁盘文件系统使用情况: [root@centos ~]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda3 11208704 7214792 3993912 65% / devtmpfs 496920 0 496920 0%...
            • 蓝屏代码大全

              千次阅读 2017-05-03 14:38:43
              0X0000001 正确的函数 0X0000002 系统找到指定的文件 0X0000003 系统找到指定的路径 0X0000004 系统无法打开文件 0X0000005 拒绝存取 0X0000006 无效的代码 0X0000007 内存控制模块已损坏 0X0000008 内存空间...

            空空如也

            空空如也

            1 2 3 4 5 ... 20
            收藏数 44,560
            精华内容 17,824
            关键字:

            一纸命令不能看