面试题比较两个长字符串的差异 python面试,一般都问什么问题?
python面试,一般都问什么问题?
1.用Python做多线程是个好主意吗?列举一些让一些Python代码并行运行的方法。
答:Python不允许真正的多线程。它有一个多线程包,但是如果你想使用多线程来加速你的代码,使用它通常不是一个好主意。Python有一个叫做全局解释器锁(GIL)的结构。GIL确保只有一个 "线程和可以一次执行。一个线程获取GIL,做一点工作,然后将GIL传递给下一个线程。这种情况发生得非常快,因此在人眼看来,您的线程似乎是并行运行的,但它们实际上只是依次使用同一个CPU内核。所有这些GIL通行证增加了运行内存。这意味着如果你想让你的代码运行得更快,使用线程包通常不是一个好主意。
使用Python s线程包。如果你想同时运行一些东西,并且效率不是问题,那么它是完全没问题的。或者,如果您正在运行需要等待某些东西(比如一些IO)的代码,这可能是有意义的。但是线程库赢了 不让你使用额外的CPU核心。
多线程可以外包给操作系统(通过多重处理),一些调用Python代码的外部应用程序(比如Spark或者Hadoop),或者一些Python代码调用的代码,比如你可以用你的Python代码调用一个C函数来完成昂贵的多线程事务。
2.这段代码输出了什么?
d: for I in rang
String常量池如何理解?面试一般会问吗?
例如,为了便于理解,有以下代码段:
字符串到helloworld
字符串t1新字符串(helloworld)
在运行时,上面的代码会在Java虚拟机堆栈中创建一个字符串类型为t0的变量,然后它会先找出在方法区的运行时常量池中是否已经存在相同的字符串。如果是,堆栈中的变量t0直接指向该字符串;如果它不 t exist,在常量池中创建一个helloworld字符串,然后将堆栈中的t0变量指向该字符串。要通过new关键字创建一个String对象,首先,在加载当前类后,它会查找helloworld字符串是否已经存在于方法区的运行时常量池中。如果不存在,它会将编译时生成的helloworld保存到运行时常量池中。如果不存在,它将在堆中生成一个String类型的对象,堆栈中的t1变量将指向该对象。需要注意的是,从JDK1.7开始,HotSpot虚拟机就把字符串常量移到了Java堆中。
让 再来说说String的intern方法,在JDK1.7之前的版本。,intern方先找出方法区的运行时常量池中是否已经存在相同的字符串,如果已经存在,则返回现有的字符串,否则将字符串常量添加到常量池中并返回该字符串。从JDK1.7开始,HotSpot虚拟机将字符串常量移到Java堆中,intern方法的实现也发生了变化。首先,它会查询常量池是否已经存在,如果存在,则返回常量池中的字符串,否则不会将字符串复制到常量池中,而只是保存常量池中字符串对象的引用。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。