Compiled languages can be interpreted, and indeed interpreted languages can be compiled.
Java is a compiled language, but it doesn't get compiled to native code it gets compiled to byte-code which is then interpreted by the host computer. Similarly Basic is designed to be an interpreted language, but using Visual Basic.NET the language is always run as compiled native code.
Interpretation and compilation are the two extremes of a line describing how a language is executed. Underneath the hood some compiled languages have characteristics of interpreted languages and some interpreted languages have characteristics of compiled languages.
JavaScript is naturally an interpreted languages. It has one of the key indicators of an interpreted language, you can very easily create a string that contains JavaScript and call an evaluate function on it to execute it. Yet some browsers are now compiling JavaScript to native code.
C# is a compiled language that runs as native code. Yet certain operations involve the creation of C# code that is then compiled as the program is running, just like you'd think an interpreter would do. [I haven't checked whether this behaviour is still present in recent editions, in early versions 'serialization' was implemented by emitting C# code, the C# compiler certainly ships with all editions of .NET to support this.]
In the old days of command line Basic, you could pause a running interpret program, change its variables, rewrite some of its code and then restart it running. That was the power that an interpreted language gave over its compiled brethren.
In a modern IDE like Visual Studio you can pause a C++ program, execute C++ statements in the immediate window, examine and change the content of variables, modify the code and the continue running it. From a developers point of view, there is little difference between compiled and interpreted; you have to look pretty deep under the hood to work out which you're using.
I've mentioned .NET several times and said its programs run as native code. However it uses an unusual model, Visual Basic.NET, C# and C++/CLI compile to an intermediate language that is then placed into the executable, this is similar to the Java model. When the program is installed or starts running, unlike Java which interprets the intermediate code, .NET compiles the intermediate language into native code. So .NET programs can appear to exhibit characteristics of both interpreted and compiled systems.
I work with large and complex C# and C++ applications on a day-to-day basis. Modern compilers can complie modified parts of code in isolation and do so very rapidly. So despite being in a large code base, I can made a small change and see its results immediately.