计算机基础知识

目录

  • Linux
    • awk文本分析工具
  • SQL
  • 计算机网络
    • TCP/IP五层协议
    • HTTP
    • DNS
  • JAVA
    • String/StringBuffer/stringBuilder
    • 容器:集合,键值对
    • final/finally/finalize
    • JVM:java虚拟机(为类提供加载机制)
      • JVM内存模型
      • 垃圾回收机制
    • 线程
    • Spring
    • 后台向前端传数据
    • Socket
  • 消息队列 (MQ)
  • redis

Linux

  • 压缩: zip 压缩包名 源文件或源目录
  • 加权限:chmod 777 test.sh
  • 建目录 :mkdir
  • 目录:cd切换,ls查看
  • 文件:增touch/删/改配置文件(vim :wq/q!)/查
  • 查看日志:tail -f XX.log ;tail -n 1000 显示最后1000行
  • 查看磁盘:df -h(根据大小展示)
  • 查看进程:ps -aux | grep;
    -a:现行终端机所有程序,u:以用户为主格式,x:所有程序,不以终端机区分
  • 占用CPU/内存MEM:top
  • 当前位置:pwd
  • 杀死进程:kill -9 pid

awk文本分析工具

NF:当前行字段(单词/列)的数目
NR:当前行行号
RS:记录分隔符
FS:字段分隔符
$0:当前行的所有字段
$ n:当前行的第n个字段
-F:修改间隔符-F"XX"
-F不在单引号里
正则表达式在单引号里,不在{}里
/^XX/:从开始处匹配
/n$/:从结尾匹配
/a/:判断作用:如果有a则XX

1.打印第3列和第4列(用"\t"将两个$隔开) awk ‘{print $3"\t"$4}’ marks.txt
2.打印包含a的行(用/a/,/a/不在体中,$0所有列)
3.统计有a的行数 awk ‘/a/{++cnt} END {print “Count=”,cnt}’ marks.txt
4.字符串长度>18的行 awk ‘length($0)>18 {print $0}’ xx.txt
5.第一列文件名,第二列版本号,打印每个文件最大版本号。
awk ‘{if(fle[$1]<$2) fle[$1]=$2}END{if(i in code) print i,fle[i]}’ xx.txt
6.找到第一列中出现最多的IP,第二列中出现最多的用户名。
awk ‘BEGIN{maxip=0 maxname=0}{ip[$1]++ name[$2]++}END{for(i in ip){if(ip[i]>maxip)maxip=ip[i] for(j in name){if(name[j]>maxname)}}}’ xx.txt
7.显示所有电话号码,电话号码以“:”分割 awk -F":"‘print $2’ xx.txt
8.显示Dan的电话号码:awk -F":"’/^Dan/{print $2}’ xx.txt
9.以D开头的所有姓 awk -F":"’{print $1}’ xx.txt|awk ‘/^D/{print $2}’ xx.txt
10.以C或E开头的名:awk ‘/1/{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' xx.txt awk '…i]++;}END{for i in array }print i,array[i]’

  • 过滤空格 ifconfig |grep eth* | awk -F ‘[ ]+’ ‘{print $1}’
  • 统计第2列“apple”的个数:awk ‘print( $ 2)’ file|awk ‘BEGIN{c = 0}{/apple/c++{print $0}}’ file
    awk -v name=Jerry ‘BEGIN{printf “Name=%s\n”,name}’
  • 行列转换:NR是行i是列
    awk ‘for(i=1;i<=NF;i++){arr[NR,i]=$i}END{for(u=1;u<=NF;u++){for(v=1;v<=NR;v++)(arrnew[u,v]=)}}’ xx.txt

SQL

  • 事务:是对数据库的操作序列;
  • 事务隔离机制:
    读未提交(“脏读”、“不可重复读”、“幻读”)
    读已提交
    可重复读(Mysql默认)
    串行化顺序执行(开销大)
  • 索引(唯一,速度,随机/顺序;B+数/hashmap)alter table tablename add primarykey(col);
  • 什么时候使用索引:排序,表连接
  • 存储引擎:买萨姆(性能/读),in no DB(支持事务&外键/写)

计算机网络

TCP/IP五层协议

  • TCP/IP 5层:应(HTTP/FTP 应-表-会)/传(tcp)/网(IP)/数/物
  • UDP/TCP:无/连接;最大/可靠 交付;多/一 对一;
  • TCP三次握手,两次不行吗
    发送/接收方,请求连接/确认报文,滞留失效,超时重传
  • 挥手:释放连接

HTTP

  • HTTP:超文本传输协议(对目标服务器生成请求报文/对目标计算机生成响应报文)
    请求:行(GET/POST ;URL) 头Connection:keep-alive(重用链接)
    响应:行(状态码)头:set-cookie(保证cookie安全)客户端的cookie是服务器设置的,客户的登陆状态放cookie
  • HTTPS
    HTTP 先和 SSL通信(加密:混合非/对称公有-私有<窃听>/认证:CA数字证书<伪装>/完整性保护:MD5报文摘要<篡改>),再由 SSL 和 TCP 通信,隧道进行通信。
    CA证书:服务器运营向CA申请-公有密钥-数字签名-绑定证书
    服务器证书->客户端->公有密钥-使用数字签名验证
  • Https测试
    1)http/https登录。https正常登录,地址栏锁,网站部署SSL。http/https正常,没有设置强制https登录,或者说没有设置http链接自动跳转https链接;相反s。
    2)可以通过SSL体检网站,输入域名进行SSL体检。这样可以直观看出网站有没有部署SSL,SSL证书链,哪个证书链。
  • HTTP REST格式:
    请求体格式:json
    GET获取,POST创建,PUT替换,DELETE删除资源
  • GET/POST/PUT
    浏览器发送请求的场景:地址栏输入数据/表单数据编码在请求的body里
    请求作用:(REST接口规范)GET获取,POST创建一个资源,
    GET 资源定位符:获得资源/列表,可以实现浏览器缓存
    REST 资源定位符{key:value}:创建一个资源(表单里的值)
    PUT 资源定位符{key:value}:替换(replace)
    数据传输:url:支持ASCII/percent encoding编码,IE8 2083 IE11 2047; Body:Content-Type定义请求格式,支持UTF-8,不容易出错
  • 状态码
    100 (继续) 请求者应当继续提出请求(较大的文件需要上传并保存,先询问)
    204范围请求
    3重定向:请求的资源已分配新的URI(统一资源标志符),301/302:永久/暂时定向,
    4XX/5XX:客户端/服务器,
    400请求语法错误;
    402
    403禁止,没有权限
    404找不到资源/找:请求url;nginx配置不当
    500服务器内部错误/找:日志>代码>参数
    502错误网关:服务器挂了
    503服务器不能处理HTTP请求:临时超载/服务器进行维护
    504网关超时:单次调用/配置;压测/压力过大

DNS

  • DNS:域名系统协议,分布式数据库
    1)域名>IP地址(浏览器缓存/路由器缓存/DNS缓存)
    2)TCP连接
    3)>服务器(HTTP请求)TCP提供可靠传输
    IP协议(网络层)路由器之间传送
    4)服务器处理请求>响应>客户端(返回HTTP响应)
    5)浏览器解析渲染界面
    6)连接结束

JAVA

String/StringBuffer/stringBuilder

可变性;安全性(多线程 安(final定义)/安(synchronised同步原语)/不安);性能
方法:(tocharArray(),length(),equals(),isEmpty(),split(’,’),StringBuffer-append())
String->stringBuffer(连接):String.tocharArray(),for(),append()

容器:集合,键值对

-list有序:linked增删;Arraylist查
-set不重:hash,linkedhash有序,tree有序
-queue
-Map(hash,linkedHash,Tree有序,hashtable线安synchronize)
hashtable/hashmap:线程安全/不安全;效率低/高;不支持/支持Null key/value;容量11/2n+1 16/2n

  • 重载/重写:一个类/父子类;参数不同/相同;返回值可不同/范围;访问修饰符可不同/范围

final/finally/finalize

final关键字:变量存储到常量池
finally{}标识代码块:无论trycatch是否抛出异常都会被执行
finallize:JVM对对象进行回收

JVM:java虚拟机(为类提供加载机制)

java编译-class文件-读到内存-在堆区创建class对象-封装 类在方法区的数据结构-提供访问方法的接口

JVM内存模型

栈:存放局部变量
堆:存放所有new出来的东西
方法区:被虚拟机加载的类信息、常量、静态常量等。
程序计数器(和系统相关)
本地方法栈

垃圾回收机制

释放垃圾占用的空间,防止内存溢出,清除/回收 内存堆中已经死亡的或者长时间没有使用的对象。

  • 算法:引用计数法:给每个对象加一个计数器,当有地方引用该对象时计数器+1,当引用失效时计数器-1;

线程

是进程中的实际运作单位,一个进程中可并发多个线程,每条线程并行执行不同的任务,共享内存。

  • 线程安全
    共享数据=多条线程-并行执行程序,线程安全的代码-同步机制-保证各个线程正常执行,不会数据污染
  • sychronized线程同步原语:放在范围操作符(public等)后,其他线程要想在此时调用该方法,只能排队
  • volatile:不同线程对变量操作时的可见性,
    -sychronized/ volatile
    1)锁定变量,当前线程可访问,其他被阻塞。/ 告诉jvm变量在寄存器中值不确定的,需要从主存中读取;
    2)在变量、方法、和类级别/变量
    3)线程的阻塞 / 不会
    4)标记的变量可以被编译器优化 / 不会

Spring

是一个开源框架, 轻量级的IoC/AOP的容器框架,用于解耦。

  • IOC:控制反转,其中最常见的方式叫做依赖注入,通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递(注入)给它。将对象交给容器管理,在spring配置文件中配置bean->设置属性,spring容器启动->初始化bean,调用时->分配bean给类
  • AOP:面向切面编程,在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想
  • IOC(控制反转), DI(依赖注入),DL(依赖查找)

后台向前端传数据

json数据:JSONObject类,把数据放到List集合/map集合中,向前端传JSONObject对象。

Socket

TCP/IP是协议栈,用Socket具体实现,提供对外的操作接口(API),Socket接口。

  • 步骤:服务器监听,客户端请求,连接确认。"打开—读/写—关闭"模式
  • 类:Socket和ServerSocket
  • 方法:listen(),accept(),connection,write,read

消息队列 (MQ)

  • 存放消息,先进先出,顺序消费(生产/消费者)
  • 使用:用户->数据库,高并发,发布订阅模式(多接收)

redis

  • redis/数据库
    内存/磁盘;单线程;hashmap,快速;数据结构简单(str计数/hash信息登陆/set排重/lis列表t/sortset排行榜)
  • 为什么要用redis:支持高可用:哨兵监控;高并发:主写复从读
  • 缓存数据库 双写一致::数写/删缓/数存缓;worker
  • 并发竞争
    时候:多个系统同时对一个key值操作
    解决:分布式锁,互斥来防止彼此干扰来保证一致性
  • 持久化
    快照:副本-复制主从
    只追加文件:操作数据库的命令存到硬盘的AOF文件
  • 命令
    String:mset,mget 一次存放多个值,一次取出多个值 ;Del删除键的值(删除成功返回1否则返回0);
    Exists查询键值是否存在(存在则返回1不凡则0);
    Type查询类型
    TTL 以秒为单位返回 key 的剩余过期时间。

java和c++的区别
设计模式
单例模式:
Hadoop:在分布式服务器集上存储海量数据,运行分布式分析程序的框架
高可用:主从结构,高可用集群,两个NameNodejie’dian
HDFS存储/MapReduce计算
HDFS:分布式/冗余备份/动态扩展/存大量数据
MapReduce:编程模型
map:每个文件分片由单独de机器处理
reduce:各台机器计算结果汇总得到最后结果

垃圾回收机制
挑一个你测得最好的
接口编写
测试环境搭建
多线程编程
内存结构
虚拟内存/物理内存


  1. CE ↩︎

你可能感兴趣的:(测开面试)