Python常问的100个面试问题汇总(上篇)

目录
  • 前言
  • python基础
    • Q1.什么是Python?
    • Q2.Python的主要功能是什么?
    • Q3.Python中支持的数据类型有哪些?
    • Q4.列表和元组有什么区别?
    • Q5.什么是Python模块?
    • Q6.python解释器种类以及特点?
    • Q7.什么是Python切片?
    • Q8.Python中的%S是什么?
    • Q9.Python编程中的函数是什么?
    • Q10.Python中有多少基本类型的函数可用?
    • Q11.我们如何用Python编写函数?
    • Q12.深拷贝和浅拷贝有什么区别?
    • Q13.Python中的函数调用或可调用对象是什么?
    • Q14.Python中Pass和Continue有什么区别?
    • Q15. PYTHONPATH环境变量的目的是什么?
    • Q16.PYTHONSTARTUP,PYTHONCASEOK,PYTHONHOME,PYTHONSTARTUP环境变量的目的是什么?
    • Q17.如何在Python中实现多线程?
    • Q18.如何在python中使用三元运算符?
    • Q19.什么是Tkinter ?
    • Q20.Python中的继承
    • Q21.请谈谈.pyc文件和.py文件的不同之处
    • Q22.什么是酸洗和去除?
    • Q23.在Python中命名与文件相关的模块?
    • Q24.解释使用with声明?
    • Q25.解释Python支持的所有文件处理模式?
    • Q26. Python支持多少种序列?
    • Q27.如何在Python中执行模式匹配?
    • Q28.Python如何处理内存管理?
    • Q29.如何以相反的顺序显示文本文件的内容?
    • Q30.什么是负索引
    • Q31.解释Python中“re”模块的split(),sub(),subn()方法。
    • Q32.解释Python Flask中的数据库连接
    • Q33. range和xrange有什么区别?
    • Q34.Python中的“按值调用”是什么?
    • Q35.什么是Python中的“按引用调用”?
    • Q36.Lambda和Def之间的主要区别是什么?
    • Q37.ascii、unicode、utf-8、gbk 区别?
    • Q38.每当Python退出时,为什么不是所有的内存都被解除分配?
    • Q 39.解释Python的参数传递机制
    • Q40.什么是猴子补丁?
    • Q41.大数据的文件读取
    • Q42.find和grep
    • Q43.线上服务可能因为种种原因导致挂掉怎么办?
    • Q44.如何提高python的运行效率
    • Q45.常用Linux命令
    • Q46.Python中的yield用法
    • Q47.描述数组、链表、队列、堆栈的区别?
    • Q48.如何使用我已经知道的URL地址本地保存图像?
    • Q49.如何获取任何网址或网页的Google缓存时限?
    • Q50.您需要从IMDb前250电影页面中删除数据,只有字段电影名称,年份和评级

前言

如果你在寻找python工作,那你的面试可能会涉及Python相关的问题。

通过对网络资料的收集整理,本文列出了100道python的面试题以及答案,你可以根据需求阅读测试。

python基础

Q1.什么是Python?

Python是一种面向对象的,交互式的,解释型的计算机程序设计语言。

Python的设计具有高可读性,它使用英语关键词而非标点符号,语法结构也比其他语言简单。

Q2.Python的主要功能是什么?

1)python是一种解释型语言,因此在使用python时不需要进行编译

2)声明变量和类似变量时,不需要重复声明变量的类型;

3)Python非常适合面向对象的编程,因为它允许类的定义以及组合和继承;

4)函数是第一类对象,这意味着它们可以分配给变量,从其他函数返回并传递给函数,类也是第一类对象;

5)用于许多领域,包括Web应用程序,自动化,科学建模,大数据应用程序等等。

Q3.Python中支持的数据类型有哪些?

Python支持5种数据类型:

1)Numbers(数字)——用于保存数值;

a=7.0

2)Strings(字符串)——字符串是一个字符序列,我们用单引号或双引号来声明字符串;

title=“Data123”

3)Lists(列表)——列表就是一些值的有序集合,我们用方括号声明列表;

colors=[‘red’,‘green’,‘blue’]

type(colors)

<class ‘list’>

4)tuples(元组)——元组和列表一样,也是一些值的有序集合,区别是元组是不可变的,意味着我们无法改变元组内的值。

(1,2,3,abc)

5)Dictionary(字典)——字典(dictionary)是除列表以外Python之中最灵活的内置数据结构类型。

列表是有序的对象结合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

dict = {}

dict['one'] = 'This is one'

dict[2] = 'This is two'

tinydict = {'name':'john','code':5762,'dept':'sales'}

print(dict['one']) #输出键为'one'的值

print(dict[2]) #输出键为2的值

print(tinydict) #输出完整的字典

print(tinydict.keys()) #输出所有键

print(tinydict.values()) #输出所有值

Q4.列表和元组有什么区别?

Q5.什么是Python模块?

模块是一个Python脚本,通常包含import语句,函数,类和变量定义,以及Python可运行代码,文件的扩展名为“.py”。

Q6.python解释器种类以及特点?

CPython:这个解释器是用C语言开发的,所以叫 CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器;

IPython:IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强;

PyPy:PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代进行动态编译,所以可以显著提高Python代码的执行速度;

Jython:Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython:IronPython和Jython类似,只不过IronPython是运行在微软.

Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

Q7.什么是Python切片?

Python中符合序列的有序序列都支持切片(slice),如:列表,字符,元祖

Python中切片的格式:[start : end : step]

Start:起始索引,从0开始,-1表示结束;End:结束索引;Step:步长

end-start=正数时,从左向右取值,=负数时反向取值

注意:切片结果不包含结束索引,即不包含最后一位,-1代表最后一个位置索引

str1 = 'abcdefghijklmnopqrstuvwxyz'

str1[2:6]

'cdef'

Q8.Python中的%S是什么?

Python支持将值格式化为字符串。虽然这可以包括非常复杂的表达式,但最基本的用法是将值插入到%s 占位符的字符串中 。

name = raw_input("who are you?")

print "hello %s" % (name,)

Q9.Python编程中的函数是什么?

函数是表示代码块并且是可重用实体的对象。

它为程序带来了模块化,并提供了更高程度的代码可重用性。

Python为我们提供了许多内置函数,例如print()等,并提供了创建用户定义函数的能力。

Q10.Python中有多少基本类型的函数可用?

Python为我们提供了两种基本类型的函数:内置和用户定义。

内置函数是Python语言的一部分,比如print(),dir(),len()和abs()等。

Q11.我们如何用Python编写函数?

我们可以通过以下方式创建Python函数。

1)用def定义函数并链接功能名称;

2)传递参数并使用括号将它们括起来,使用冒号来表示结尾;

3)添加所需的Python语句以供执行。

Q12.深拷贝和浅拷贝有什么区别?

深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。

在Python中,我们使用函数deepcopy()执行深拷贝,导入模块copy,如下所示:

import copy

b=copy.deepcopy(a)

而浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。

我们使用函数function()执行浅拷贝,使用如下所示:

b=copy.copy(a)

Q13.Python中的函数调用或可调用对象是什么?

Python中的函数被视为可调用对象。

它可以允许一些参数,并以元组的形式返回一个值或多个值。除了函数之外,Python还有其他构造,例如类或适合同一类别的类实例。

Q14.Python中Pass和Continue有什么区别?

continue语句使循环从下一次迭代中恢复。pass语句指示什么都不做,代码的其余部分像往常一样执行。

Q15. PYTHONPATH环境变量的目的是什么?

PYTHONPATH - 它的作用类似于PATH。

此变量告诉Python解释器在何处找到导入程序的模块文件。

它应该包括Python源库目录和包含Python源代码的目录。

PYTHONPATH有时由Python安装程序预设。

Q16.PYTHONSTARTUP,PYTHONCASEOK,PYTHONHOME,PYTHONSTARTUP环境变量的目的是什么?

PYTHONSTARTUP - 它包含一个包含Python源代码的初始化文件的路径。

每次启动解释器时都会执行它。

它在Unix中命名为.pythonrc.py,它包含加载实用程序或修改PYTHONPATH的命令。

PYTHONCASEOK - 在Windows中用于指示Python在import语句中查找第一个不区分大小写的匹配项。

将此变量设置为任何值以激活它。

PYTHONHOME - 它是另一种模块搜索路径。

它通常嵌入在PYTHONSTARTUP或PYTHONPATH目录中,以便于切换模块库。

Q17.如何在Python中实现多线程?

python主要是通过thread和threading这两个模块来实现多线程支持。

python的thread模块是比较底层的模块,python的threading模块是对thread做了一些封装,可以更加方便的被使用

。但是python(cpython)由于GIL的存在无法使用threading充分利用CPU资源,如果想充分发挥多核CPU的计算能力需要使用multiprocessing模块(Windows下使用会有诸多问题)。

python3.x中已经摒弃了Python2.x中采用函数式thread模块中的start_new_thread()函数来产生新线程方式。

python3.x中通过threading模块创建新的线程有两种方法:

1)通过threading.Thread(Target=executable Method)-即传递给Thread对象一个可执行方法(或对象)

2)继承threading.Thread定义子类并重写run()方法。

第二种方法中,唯一必须重写的方法是run()。

Q18.如何在python中使用三元运算符?

Ternary运算符是用于显示条件语句的运算符。

这包含true或false值,并且必须为其评估语句。

三元运算符将被给出为:

[on_true] if [expression] else [on_false] x,y = 25,50big =x if x <y else y

表达式的计算方式与x <y else y一样,在这种情况下,如果x <y为真,则返回值为big = x,如果不正确则返回big = y作为结果。

Q19.什么是Tkinter ?

TKinter是一款很知名的Python库,用它我们可以制作图形用户界面。其支持不同的GUI工具和窗口构件,比如按钮、标签、文本框等等。

这些工具和构件均有不同的属性,比如维度、颜色、字体等。

Q20.Python中的继承

继承允许一个类获得另一个类的所有成员(比如属性和方法)。

继承提供代码可重用性,使创建和维护应用程序更容易。

Python支持的不同类型的继承:

1)单一继承 - 派生类获取单个超类的成员;

2)多级继承 - 从基类base1继承的派生类d1,d2继承自base2;

3)分层继承 - 从一个基类可以继承任意数量的子类;

4)多重继承 - 派生类从多个基类继承。

Q21.请谈谈.pyc文件和.py文件的不同之处

虽然这两种文件均保存字节代码,但.pyc文件是Python文件的编译版本,它有平台无关的字节代码,因此我们可以在任何支持.pyc格式文件的平台上执行它。

Q22.什么是酸洗和去除?

Pickle模块接受任何Python对象并将其转换为字符串表示形式,并使用dump函数将其转储到文件中,此过程称为pickling。

从存储的字符串表示中检索原始Python对象的过程称为unpickling。

Q23.在Python中命名与文件相关的模块?

Python为库/模块提供了一些函数,你可以在文件系统上操作文本文件和二进制文件。

使用它们完成创建文件,更新内容,复制和删除文件的操作。这些库是:os,os.path和shutil。

Q24.解释使用with声明?

在python中,通常“with”语句用于打开文件,处理文件中存在的数据,还可以在不调用close()方法的情况下关闭文件。

Q25.解释Python支持的所有文件处理模式?

Python中可以使用三种方法打开文件。他们是:

1)通过分别指定标志“r”,“w”,“rw”,“a”,只读模式,只写模式,读写模式和附加模式;

2)通过指定选项“t”,可以在上述任何一种模式中打开文本文件;

3)“r”,“w”,“rw”和“a”,以便前面的模式变为“rt”,“wt”,“rwt”和“at”。

二进制文件可以在任何一个中打开上述模式通过指定选项“b”以及“r”,“w”,“rw”和“a”使得前面的模式为“rb”,“wb”,“rwb”,“ab”。

Q26. Python支持多少种序列?

Python支持7种序列类型。它们是str,list,tuple,unicode,byte array,xrange和buffer。

其中xrange在python 3.5.X中已弃用。

Q27.如何在Python中执行模式匹配?

正则表达式(RE)使我们能够指定匹配给定字符串的特定“部分”的表达式。

例如,我们可以定义一个正则表达式来匹配单个字符或数字,电话号码或电子邮件地址等.Python的“re”模块提供正则表达式模式,并从Python 2.5的更高版本中引入。

“re”模块提供搜索文本字符串的方法,或者替换文本字符串以及基于定义的模式拆分文本字符串的方法。

Q28.Python如何处理内存管理?

Python内存由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。

程序员无权访问此私有堆,解释器负责处理此私有堆。Python对象的Python堆空间分配由Python内存管理器完成。

核心API提供了一些程序员编写代码的工具。Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存并释放内存并使其可用于堆空间。

Q29.如何以相反的顺序显示文本文件的内容?

1)将给定文件转换为列表

2)使用reverse()反转列表例如:

for reverse in reverse(list(open(“file-name”,“r”))):

print()

Q30.什么是负索引

Python序列可以是正数和负数的索引。

对于正索引,0是第一个索引,1是第二个索引,依此类推。

对于负索引,( - 1)是最后一个索引,( - 2)是倒数第二个索引,依此类推。

Q31.解释Python中“re”模块的split(),sub(),subn()方法。

为了修改字符串,Python的“re”模块提供了3种方法。

1)split() - 使用正则表达式模式将给定字符串“拆分”到列表中;

2)sub() - 查找正则表达式模式匹配的所有子字符串,然后用不同的字符串替换它们;

3)subn() - 它类似于sub(),并且还返回新字符串和no。替换。

Q32.解释Python Flask中的数据库连接

Flask支持数据库驱动的应用程序(RDBS)。Flask允许以三种方式请求数据库

1)before_request():在请求之前调用它们并且不传递任何参数

2)after_request():在请求后调用它们并传递将发送到客户端的响应

3)teardown_request():在引发异常时调用它们,并且不保证响应。它们在响应构建后被调用。不允许他们修改请求,并忽略它们的值。

Q33. range和xrange有什么区别?

在大多数情况下,xrange和range在功能方面完全相同,它们都提供了一种生成整数列表的方法。

唯一的区别是range返回一个Python列表对象,x range返回一个xrange对象。

Q34.Python中的“按值调用”是什么?

在call-by-value中,表达式或值是否绑定到函数中的相应变量的参数。

Python会将该变量视为函数级范围中的本地变量。

对该变量所做的任何更改都将保留在本地,并且不会反映在该函数之外。

Q35.什么是Python中的“按引用调用”?

我们可以互换地使用“引用调用”和“引用传递”。

当我们通过引用传递参数时,它可以作为函数的隐式引用,而不是简单的副本。

在这种情况下,对参数的任何修改也将对调用者可见。

该方案还具有带来更多时间和空间效率的优点,因为它留下了创建本地副本的需要。

相反,缺点可能是函数调用期间变量可能会意外更改。

Q36.Lambda和Def之间的主要区别是什么?

当lambda是uni-expression函数时,Def可以包含多个表达式。

Def生成一个函数并指定一个名称以便稍后调用它。

Lambda形成一个函数对象并返回。

Def可以有一个return语句。

Lambda不能有return语句。

Lambda支持在列表和字典中使用。

Q37.ascii、unicode、utf-8、gbk 区别?

ASCII码:使用一个字节编码,所以它的范围基本是只有英文字母、数字和一些特殊符号 ,只有256个字符;

Unicode:能够表示全世界所有的字节;

GBK:是只用来编码汉字的,GBK全称《汉字内码扩展规范》,使用双字节编码;

UTF-8:是一种针对Unicode的可变长度字符编码,又称万国码。

Q38.每当Python退出时,为什么不是所有的内存都被解除分配?

每当python退出时,尤其是那些对其他对象具有循环引用的Python模块或者从全局名称空间引用的对象并不总是被解除分配或释放

。由于python拥有自己的高效清理机制,无法解除分配保留的那些内存部分会在退出时尝试取消分配/销毁其他所有对象。

Q 39.解释Python的参数传递机制

Python使用按引用传递(pass-by-reference)将参数传递到函数中。

如果你改变一个函数内的参数,会影响到函数的调用。

这是Python的默认操作。不过,如果我们传递字面参数,比如字符串、数字或元组,它们是按值传递,这是因为它们是不可变的。

Q40.什么是猴子补丁?

在运行期间动态修改一个类或模块。

class A:

  def func(self):

      print("Hi")

def monkey(self):

print "Hi, monkey"

m.A.func = monkey

a = m.A()

a.func()

Hi, Monkey

Q41.大数据的文件读取

1)利用生成器generator

2)迭代器进行迭代遍历:for line in file

Q42.find和grep

grep命令是一种强大的文本搜索工具,grep搜索内容串可以是正则表达式,允许对文本文件进行模式查找。

如果找到匹配模式,grep打印包含模式的所有行。

find通常用来再特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。

Q43.线上服务可能因为种种原因导致挂掉怎么办?

linux下的后台进程管理利器 supervisor

每次文件修改后再linux执行 service supervisord restart

Q44.如何提高python的运行效率

使用生成器;关键代码使用外部功能包(Cython,pylnlne,pypy,pyrex);针对循环的优化–尽量避免在循环中访问变量的属性

Q45.常用Linux命令

ls,help,cd,more,clear,mkdir,pwd,rm,grep,find,mv,su,date

Q46.Python中的yield用法

yield简单说来就是一个生成器,这样函数它记住上次返 回时在函数体中的位置。

对生成器第 二次(或n 次)调用跳转至该函 次)调用跳转至该函数。

Q47.描述数组、链表、队列、堆栈的区别?

数组与链表是数据存储方式的概念,数组在连续的空间中存储数据,而链表可以在非连续的空间中存储数据。

队列和堆栈是描述数据存取方式的概念,队列是先进先出,而堆栈是后进先出。

队列和堆栈可以用数组来实现,也可以用链表实现。

Q48.如何使用我已经知道的URL地址本地保存图像?

将使用以下代码从URL地址本地保存图像:

import urllib.request

urllib.request.urlretrieve("URL", "local-filename.jpg")

Q49.如何获取任何网址或网页的Google缓存时限?

使用以下URL格式:

http://webcache.googleusercontent.com/search?q=cache:URLGOESHERE请务必将“URLGOESHERE”替换为您要检索其缓存的页面或网站的正确网址,并查看时间。

例如,要查看http://edureka.co的Google Webcache时代,您需要使用以下网址:

http://webcache.googleusercontent.com/search?q=cache:edureka.co

Q50.您需要从IMDb前250电影页面中删除数据,只有字段电影名称,年份和评级

from bs4 import BeautifulSoup

import requests

import sys

url ='http://www.imdb.com/chart/top'

response =requests.get(url)

soup =BeautifulSoup(response.text)

tr =soup.findChildren("tr")

tr =iter(tr)

next(tr)

formovie intr:

title =movie.find('td', {'class': 'titleColumn'} ).find('a').contents[0]

year =movie.find('td', {'class': 'titleColumn'} ).find('span', {'class': 'secondaryInfo'}).contents[0]

rating =movie.find('td', {'class': 'ratingColumn imdbRating'} ).find('strong').contents[0]

row =title +' - '+year +' '+' '+rating

print(row)

上述代码将有助于从IMDb的前250名列表中删除数据。

本篇文章就到此结束了,别忘了还有下篇的内容。请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 中文乱码问题深入分析

    在本文中,以'哈'来解释作示例解释所有的问题,"哈"的各种编码如下: 1. UNICODE (UTF8-16),C854: 2. UTF-8,E59388: 3. GBK,B9FE. 一.python中的str和unicode 一直以来,python中的中文编码就是一个极为头大的问题,经常抛出编码转换的异常,python中的str和unicode到底是一个什么东西呢? 在python中提到unicode,一般指的是unicode对象,例如'哈哈'的unicode对象为 u'\u54c8

  • Python爬虫工程师面试问题总结

    注:答案一般在网上都能够找到. 1.对if __name__ == 'main'的理解陈述 2.python是如何进行内存管理的? 3.请写出一段Python代码实现删除一个list里面的重复元素 4.Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别) 5.介绍一下except的用法和作用? 6.Python中__new__与__init__方法的区别 7.常用的网络数据爬取方法 8.遇到过得反爬虫策略以及解决方法 9.urllib 和 urllib2 的区别 10.设计一个基于s

  • Python字符串的encode与decode研究心得乱码问题解决方法

    为什么会报错"UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)"?本文就来研究一下这个问题. 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码. decode的作用

  • Python面经之16个高频面试问题总结

    目录 (一)Python 是如何进行内存管理的? (二)什么是 lambda 函数?它有什么好处? (三)Python 里面如何实现 tuple 和 list 的转换? (四)请写出一段 Python 代码实现删除一个list 里面的重复元素 (五)编程用 sort 进行排序,然后从最后一个元素开始判断 (六)Python 里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别) (七)介绍一下 except 的用法和作用? (八)Python 中 pass 语句的作用是什么? (九)介绍一下 Py

  • Python EOL while scanning string literal问题解决方法

    项目中有个定时任务,每天取到一些表数据传到一个外部接口,但是最近总是有异常,今天查了下原因. 首先本地和测试环境测试这个程序都没问题,只有线上环境会在日志中抛出异常,猜测异常主要产生的原因是数据的异常. 但是哪些数据有异常,由不得而知,于是增加了程序的输出日志和数据打印,通过几次的运行定位了发生错误的函数和数据记录. 异常是这样的: 复制代码 代码如下: EOL while scanning string literal: <string>, line 1, pos 7 google一下,这个

  • Python常问的100个面试问题汇总(上篇)

    目录 前言 python基础 Q1.什么是Python? Q2.Python的主要功能是什么? Q3.Python中支持的数据类型有哪些? Q4.列表和元组有什么区别? Q5.什么是Python模块? Q6.python解释器种类以及特点? Q7.什么是Python切片? Q8.Python中的%S是什么? Q9.Python编程中的函数是什么? Q10.Python中有多少基本类型的函数可用? Q11.我们如何用Python编写函数? Q12.深拷贝和浅拷贝有什么区别? Q13.Python中

  • Python常问的100个面试问题汇总(下篇)

    前言 如果你在寻找python工作,那你的面试可能会涉及Python相关的问题. 通过对网络资料的收集整理,本文列出了100道python的面试题以及答案,你可以根据需求阅读测试. Q51.请解释使用args和kwargs的含义 当我们不知道向函数传递多少参数时,比如我们向传递一个列表或元组,我们就使用*args: def func(*args): for i in args: print(i) func(3,2,1,4,7) 3 2 1 4 7 在我们不知道该传递多少关键字参数时,使用**kw

  • 2017年最新PHP经典面试题目汇总(上篇)

    1.双引号和单引号的区别 双引号解释变量,单引号不解释变量 双引号里插入单引号,其中单引号里如果有变量的话,变量解释 双引号的变量名后面必须要有一个非数字.字母.下划线的特殊字符,或者用{}讲变量括起来,否则会将变量名后面的部分当做一个整体,引起语法错误 双引号解释转义字符,单引号不解释转义字符,但是解释'\和\\ 能使单引号字符尽量使用单引号,单引号的效率比双引号要高(因为双引号要先遍历一遍,判断里面有没有变量,然后再进行操作,而单引号则不需要判断) 2.常用的超全局变量(8个) $_GET

  • Java多线程面试题(面试官常问)

    进程和线程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.系统运行一个程序即是从一个进程从创建.运行到消亡的过程.在Java中,当我们启动main函数时其实就是启动了一个JVM的进程,而mian函数所在的线程就是这个进程中的一个线程,称为主线程. 线程是比进程更小的执行单位.一个进程在其执行的过程中可以产生多个线程.与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程都有自己的程序计数器.虚拟机和本地方法栈,所以系统在产生一个线程,或在各个线程之间切换工作是,

  • SpringBoot服务监控机制原理解析(面试官常问)

    前言 任何一个服务如果没有监控,那就是两眼一抹黑,无法知道当前服务的运行情况,也就无法对可能出现的异常状况进行很好的处理,所以对任意一个服务来说,监控都是必不可少的. 就目前而言,大部分微服务应用都是基于 SpringBoot 来构建,所以了解 SpringBoot 的监控特性是非常有必要的,而 SpringBoot 也提供了一些特性来帮助我们监控应用. 本文基于 SpringBoot 2.3.1.RELEASE 版本演示. SpringBoot 监控 SpringBoot 中的监控可以分为 H

  • Linux面试中最常问的10个问题总结

    前言 如果你要去面试一个Linux系统运维工程师的职位,下面这十个最常见的问题一定要会,否则你的面试可能就危险了.这些都是比较基本的问题,大家要理解,不能光死记硬背. 1.如何查看系统内核的版本 这里有两种方法: 1) uname -a uname 这个命令是用来打印系统信息的, -a 可以打印系统所有信息,其中包含内核版本,比如我的版本号是3.10.0-957.21.3.el7.X86_64. 2) cat /proc/version 下面再补充一下各个数字和字母代表的含义: 3 表示主版本号

  • 面试官:怎么做JDK8的垃圾收集器的调优(面试常问)

    看着面试官真诚的眼神,心中暗想看起来年纪轻轻却提出如此直击灵魂的问题.擦了擦额头上汗,我稍微调整了一下紧张的情绪,对面试官说: 在JDK8中有Serial收集器.Parallel收集器.CMS收集器.G1收集器这么几种收集器,需要根据实际硬件配置和业务需求进行选择调优. 如此浅显的回答,无法让面试官达到深入的要求,肯定不能满足面试官强烈的需求,果不其然面试官又追问到:如果是桌面应用,内存占用也就100MB,应该选择哪种垃圾收集器呢?我快速的回答:Serial收集器.看着面试官期待的眼神,我又详细

  • 面试最常问的13种Vue修饰符

    目录 1.lazy 2.trim 3.number 4.stop 5.capture 6.self 7.once 8.prevent 9.native 10.left,right,middle 11.passive 12.camel 12.sync 13.keyCode 1.lazy lazy修饰符作用是,改变输入框的值时value不会改变,当光标离开输入框时,v-model绑定的值value才会改变 <input type="text" v-model.lazy="v

  • 面试官常问React的生命周期问题

    React的生命周期 两张图带你理解 React的生命周期 React的生命周期(旧) class Life extends React.Component{ // 构造器 constructor(props){ console.log('Life构造器---constructor'); super(props) this.state={num:0} } // 计算+1功能 add=()=>{ const {num} = this.state this.setState({num:num+1})

  • 面试常问:如何保证Redis缓存和数据库的数据一致性

    目录 一.一致性 1.强一致性 2.弱一致性 3.最终一致性 二.redis缓存和mysql数据库数据一致性解决 1.方案一:采用延时双删策略 2.方案二:一步更新缓存(基于订阅Binlog的同步机制) 首先,我们先来看看有哪几种一致性的情况呢? 一.一致性 1.强一致性 如果你的项目对缓存的要求是强一致性的,那么请不要使用缓存.这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大. 2.弱一致性 这种一致性级别约束了系统在写入成

随机推荐