Same behavior for Java and NDK. Both use AssetManager class under the hoods. For earlier versions of AssetManager.cpp, AssetManager::open() works the same.
It is, theoretically, possible to tweak AssetManager behavior (after all, AssetManager.addAssetPaths() is public, and can be fetched via reflection), but there is no documented way to do this, which means that you cannot know if your hack will work on the next version of Android, or on some vendor's custom version of the system.
I would recommend not to do such tricks. Much safer to check if the same file exists in internal directory, and delete or rename it, if necessary. But anyways, the asset manager does not normally read from the internal files directory for the app.