您的位置:首页 > 运维架构 > Linux

linux面试笔试要点总结

2013-10-07 14:59 302 查看
最近又要开始面试笔试了,头疼,自己要报底层软件方向,总结下相关方向的要点吧,先写个框架,等下来补充

linux系统的基础知识,比如优势特点之类的

首先是授权问题,linux比较便宜
第二点是性能优越,两点可以定制,本身比较小,但效率高
第三点linux比较安全稳定
第四点 支持众多硬件
第五点,强大的因特网支持
最快的更新速度

shell命令和shell编程:常用命令 用户管理 权限管理 网络管理等等(这个比较重要,细看)

输入输出:echo、(\c 不换行。\f 进纸。\t 跳格。\n 换行)read(见下面例子) cat(显示完整文件或者将几个文件导入在一起显示在命令行里面)、管道(把两个命令连起来,还可以把命令从一个传输到另外一个 grep awk)tee()
$ read name surname
John Doe
$ echo $name $surname
John Doe

$ cat myfile1 myfile2 myfile3 > bigfile

$ ls | grep quarter1.doc
quarter1.doc

$ who | tee who.out
louise pts/1 May 20 12:58 (193.132.90.9)
matter pts/0 May 20 11:30 (193.123.22.1)
$ cat who.out
louise pts/1 May 20 12:58 (193.132.90.9)
matter pts/0 May 20 11:30 (193.123.22.1)


三大语句
#!/bin/sh
scores=40;
if [[ $scores -gt 90 ]]; then
echo "very good!";
elif [[ $scores -gt 80 ]]; then
echo "good!";
elif [[ $scores -gt 60 ]]; then
echo "pass!";
else
echo "no pass!";
fi;

#!/bin/sh
for i in $(seq 10); do
echo $i;
done;


#!/bin/sh
i=10;
while [[ $i -gt 5 ]];do
echo $i;
((i--));
done;

运行结果:========================

sh testwhile1.sh
10
9
8
7
6


常用命令cd ls rm(-rf) tar(-zvxf 解压,-zvcf 创建) find (见代码)yum(见代码)
find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录

yum install package_name 下载并安装一个rpm包


用户权限管理,chmod(u---user ,g--- group,o--other,其中r=4,w=2,x=1(x为执行),+为增加权限,-为减少权限)
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
   chmod ug+w,o-w file1.txt file2.txt


$ ls -l text
-rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd
-rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd


7个段分别是:文件属性:drwxrwxr-x
链接数:7(如果是文件这里就是1,这里是目录,表示目录中文件个数)
所属者group:tarena
文件大小:4096
修改日期:12月 21 12:01
文件名:test
拥有者:tarena

文件属性不知道是什么玩意,解析下:这里共有10个bit位,表示成10个字符,r是4,w是2,x是执行,为1。

第一格是特殊格目录或连结文件等等,d表示目录,例如drwx------;l表示连结文件,如 lrwxrwxrwx;如果是以一横"-"表示,则表示这是文件。

剩下三个为一组:rwx(Owner)r-x(Group)r-x(Other),里面如果有-代表这个相应的权限没有



组管理adduser 与 useradd usrname -c
 -c comment 新使用者位于密码档(通常是 /etc/passwd)的注解资料
  -d home_dir 设定使用者的家目录为 home_dir ,预设值为预设的 home 后面加上使用者帐号 loginid
  -e expire_date 设定此帐号的使用期限(格式为 YYYY-MM-DD),预设值为永久有效


网络管理ping ipconfig
服务开起关闭(例子:service vsftpd start、service vsftpd restart)
很杂的常用命令ftp、df、mount、pwd、
ftp 主机名/IP
exit
lcd 显示本地目录
ls/cd
pwd 显示服务器上当前目录
put local-file [remote-file] 将一个文件上传到ftp

mount -t ntfs /dev/sdb1 /mnt/disk

linux中df命令可显示所有文件系统对i节点和磁盘块的使用情况


参考网页shell命令输入输出

linux系统各个目录做什么用的(写几个主要的,其他自己看参考网页去吧)

/bin:常用命令存放

/home:用户主目录

/media:挂载设备

/dev:外部设备

/root

/lost+found

/lib:最基本的动态链接共享库,其作用类似于Windows里的.dll文档

/mnt:挂载别的文件

/proc

/usr:最庞大最需要了解的目录(应用程序和数据)

/usr:这是个最庞大的目录,我们要用到的很多应用程式和文档几乎都存放在这个目录了。具体来说:
/usr/X11R6:存放X-Windows的目录。
/usr/bin:存放着许多应用程式.
/usr/sbin:给终极用户使用的一些管理程式就放在这.
/usr/doc:这就是Linux文档的大本营.
/usr/include:Linux下研发和编译应用程式需要的头文档在这里找.
/usr/lib:存放一些常用的动态链接共享库和静态档案库.
/usr/local:这是提供给一般用户的/usr目录,在这安装软件最适合.
/usr/man:是帮助文档目录.
/usr/src:Linux开放的源代码,就存在这个目录,爱好者们别放过哦!

/etc文件系统:目录包含各种系统配置文件,下面说明其中的一些。其他的你应该知道它们属于哪个程序,并阅读该程序的m a n页。许多网络配置文件也在/etc 中。

1. /etc/rc或/etc/rc.d或/etc/rc?.d
启动、或改变运行级时运行的脚本或脚本的目录。
2. /etc/passwd
用户数据库,其中的域给出了用户名、真实姓名、用户起始目录、加密口令和用户的其他信息。
5. /etc/group
类似/etc/passwd ,但说明的不是用户信息而是组的信息。包括组的各种数据。
6. /etc/inittab
init 的配置文件。
14. /etc/profile 、/ e t c / c s h . l o g i n、/etc/csh.cshrc登录或启动时b o u r n e或c shells执行的文件。这允许系统管理员为所有用户建立全局缺省环境。
16. /etc/shells
列出可以使用的s h e l l。chsh 命令允许用户在本文件指定范围内改变登录的s h e l l。提供一台机器f t p服务的服务进程ftpd 检查用户s h e l l是否列在/etc/shells 文件中,如果不是,将不允许该用户登录。


/proc文件系统

/proc 文件系统是一个伪的文件系统,就是说它是一个实际上不存在的目录,因而这是一个非常特殊的目录。它并不存在于某个磁盘上,而是由核心在内存中产生。这个目录用于提供关于系统的信息。下面说明一些最重要的文件和目录(/proc 文件系统在proc man页中有更详

细的说明)。

1. /proc/x
关于进程x的信息目录,这一x是这一进程的标识号。每个进程在/proc 下有一个名为自己进程号的目录。
2. /proc/cpuinfo
存放处理器( c p u )的信息,如c p u的类型、制造商、型号和性能等。
3. /proc/devices
当前运行的核心配置的设备驱动的列表。
5. /proc/filesystems
核心配置的文件系统信息。
6. /proc/interrupts
显示被占用的中断信息和占用者的信息,以及被占用的数量。
7. /proc/ioports
当前使用的i / o端口。
东西占用任何磁盘空间。)
12. /proc/meminfo
各种存储器使用信息,包括物理内存和交换分区( s w a p )。
13. /proc/modules
存放当前加载了哪些核心模块信息。
14. /proc/net
网络协议状态信息。
18. /proc/version
核心版本。


linux驱动类的问题:

linux的驱动机制:从内核的功能类型到驱动完成功能的各个步骤

内核有五大功能:1、进程管理;2、内存管理;3、文件系统;4、设备管理;5、网络管理;其中除了处理器, 内存和非常少的别的实体之外, 全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行. 这些代码称为设备驱动. 内核中必须嵌入系统中出现的每个外设的驱动, 从硬盘驱动到键盘和磁带驱动器
Linux用户程序通过设备文件 (又名:设备节点)来使用驱动程序操作字符设备和块设备,具体是使用模块来操作
驱动程序的功能:系统调用(给应用的)中断调用(中断处理)
字符设备和块设备

字符设备:是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现 open, close, read和 write 系统调用。顺序访问(通过insmod、lsmod ,rmmod.就可以实现了)

块设备:只能一次传送一个或多个长度是512字节( 或一个更大的 2 次幂的数 )的整块数据。

区别:块和字符设备的区别:1、接口不同:仅仅是驱动的与内核的接口不同

2、有无缓冲。块设备有缓冲,因此能选择响应请求的顺序以提高性能,读的时候是一块一块的读。块设备能随机访问。存储设备一般是块设 备。字符设备没有缓冲,按顺序读取。比如键盘,鼠标都是字符设备。大多数设备都是字符设备,因为大多数设备都不需要块设备类型的缓冲
主设备号和次设备号的作用:主设备号用来标识与设备文件相连的驱动程序。次编号被驱动程序用来辨别操作的是哪个设备。
驱动多线程同步(死锁(多设备多竞争拿下资源不放,产生原因和解决方法参考linux死锁)、互斥体(mutex)、自旋锁、信号量(信号量是用来计算现有资源数量的,互斥体是用来保护共享代码的,自旋锁是除非自己完成释放,否则无法进行的锁机制,三者区别见前面文章的链接)、临界资源(一个进另外一个就不能进)、原子操作(不能被线程调度机制打断的操作)、读写自旋锁(读写一样的优先级)、顺序锁(写锁的优先级更高)、等待序列、等待事件、唤醒队列(前面这三个都要见互斥体这块的东西)、轮询和中断、completion机制、条件变量( pthread_cond_wait
和互斥体一起使用,执行的流程首先将这个mutex解锁, 然后等待条件变量被唤醒, 如果没有被唤醒, 该线程将一直休眠, 也就是说, 另外一个线程如果有该函数,在加锁之前后面的操作就不会进行,那个线程将一直阻塞在这个pthread_cond_wait调用中)
相关函数(具体到ldd的学习笔记里面再解析)

read, write, ioctl(实现IO控制), polling(轮询)
内存管理

inux的mmap文件映射机制

虚拟内存

保护模式
杂七杂八的小点:1、创建设备文件mkmod2、分配主设备号(静态申请,一旦驱动被广泛使用, 这个随机选定的主设备号可能会导致设备号冲突,而使驱动程序无法注册;动态分配,无法在安装驱动前创建设备文件(因为安装前还没有分配到主设备号))3注销主设备(unregister_chrdev_region)

cache 解决cpu速度和主存之间存取速度的矛盾(按照命中率)

DMA(设备到设备)

PCI设备驱动(具体到ldd的学习笔记里面再解析)

安卓了解多少

先给个参考网页,之后再来写心得安卓结构安卓架构及其相关分析安卓之父解析安卓(量太少)、安卓架构分析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: